Não é possível enviar para Heroku porque a impressão digital principal

131

Eu sou novo no Rails e estava tentando implantar um aplicativo muito simples no Heroku. Este é o segundo aplicativo que eu implanto, e o primeiro que eu consegui fazer muito bem. No entanto, estou tendo alguns problemas com este. Sempre que eu " git push heroku master ", recebo este erro:

! Sua chave com impressão digital xx: xx: xx: xx: xx: xx: xx: xx: xx: xx: xx: xx: xx: xx: xx: xx: xx não está autorizada a> acessar my_heroku_app.

fatal: a extremidade remota desligou inesperadamente

Eu tentei gerenciar minhas chaves depois de fazer login no heroku. Se eu digitar no meu console " chaves heroku ", então recebo:

Nenhuma chave para o meu endereço de email.

No entanto, se eu executar o comando " heroku keys: add ", recebo

Chave pública existente encontrada: /Users/michele/.ssh/id_rsa.pub Fazendo upload da chave pública ssh /Users/michele/.ssh/id_rsa.pub! A impressão digital já existe. Use uma chave ssh por conta Heroku

Por favor me ajude! Isso é tão frustrante, não tenho idéia do que está errado! Obrigado

senhor
fonte

Respostas:

288

Eu tive o mesmo problema, segui este post e outros do mesmo tipo, sem sucesso: - ((

Finalmente, encontrei a solução: tive que adicionar minha nova identidade rsa na minha máquina!

Então, antes de tudo, criei uma nova chave rsa:

ssh-keygen -t rsa -C "giordano.scalzo[at]gmail.com" -f  ~/.ssh/id_rsa_heroku

então adicionei na minha máquina

ssh-add ~/.ssh/id_rsa_heroku

e, finalmente, para Heroku

heroku keys:add ~/.ssh/id_rsa_heroku.pub

Depois disso,

git push heroku master

funcionou como um encanto!

Espero que isto ajude.

Giordano Scalzo
fonte
47
Isso foi muito próximo para mim. Mas havia mais uma coisa. Eu tinha duas contas heroku. O primeiro havia adicionado minha chave SSH padrão à minha máquina. Não importa o que eu fiz tentando consertar minha segunda conta, não levaria até eu remover minha chave padrão da primeira conta. O SSH-AGENT enviará a primeira chave por padrão, causando esse problema. A correção é para criar teclas específicas para heroku (não o padrão) para cada conta
Tom Carchrae
13
Eu tive o mesmo problema que @TomCarchrae. Saí da conta que parecia permanentemente bloqueada heroku logout, entrei na outra conta e excluí a chave RSA padrão dessa conta. Depois disso, fui capaz de pressionar com essa chave recém-gerada.
Ross Allen
14
Para mim, pessoalmente, fiz o equivalente ao ssh-add ~/.ssh/id_rsa_herokumeu, ssh-add ~/.ssh/identity.heroku.fooporque também estou usando https://github.com/ddollar/heroku-accounts (um gerente de várias contas da Heroku).
user664833
1
outra coisa a ter em mente - se você tiver muitas chaves SSH, ele não poderá efetuar login porque tenta as chaves em ordem (e, em seguida, você é expulso do logon por muitas falhas). isso parece ser uma falha no ssh-agent (no ubuntu de qualquer maneira, mas presumo que outras implementações também). portanto, se você estiver arrancando os cabelos, tente mover o diretório ~ / .ssh e inicie um novo (você pode puxar as teclas uma a uma).
Tom Carchrae
7
Você pode influenciar qual chave é enviada adicionando uma entrada de host em ~ / .ssh / config para heroku.com, apontando para a chave desejada. Essa foi uma solução rápida para mim, pois ela continuava tentando usar minha chave padrão e falhou. Isso provavelmente não ajudará no caso de várias contas.
dnewcome
61

Eu também tenho várias chaves e várias contas heroku, então me deparei com esse problema a cada poucos meses. Como mencionado Giordano Scalzo, Tom Carchrae e user664833, o principal problema é o ssh-agent, que você controla usando o ssh-addcomando A página de manual ( man ssh-add) é realmente bastante clara e concisa, então confira.

Você pode listar todas as chaves conhecidas pelo ssh-agent:

ssh-add -l

Você pode excluir todas as chaves conhecidas pelo ssh-agent:

ssh-add -D

Ou exclua uma chave específica com

ssh-add -d ~/.ssh/id_rsa_example_key_file_use_your_own

Não se preocupe! Na verdade, você não está excluindo as chaves, apenas alterando quais ssh-agent automaticamente tenta usar, por exemplo, quando você tenta enviar para heroku. É fácil adicionar e excluir chaves conforme necessário; portanto, para mim, quando fico frustrado com esse problema, a maneira mais fácil de corrigi-lo é excluir todas as chaves e adicionar apenas a que quero usar no momento.

ssh-add -D
ssh-add ~/.ssh/id_rsa_example_use_this_one_i_mean_it
towynlin
fonte
1
isso funcionou bem para mim, no entanto, tentar adicionar de volta minha chave ssh padrão continuava solicitando a senha (no Mtn Lion), não acha que tenho uma? Rebooted e estava de volta ao meu ssh padrão tudo ok - também encontrei este stackoverflow.com/questions/7927750/... que funciona muito bem
house9
batendo minha cabeça contra uma parede por um bom tempo sobre esta, e este foi o passo final necessário - obrigado!
Griswoldbar
Se você tentou o primeiro método, então este, (e está recebendo um erro de permissão negada (chave pública) quando tenta enviar para o controle remoto Heroku), provavelmente se esqueceu de executar novamente as teclas heroku: add command. De qualquer forma, muito obrigado! Isso fez por mim.
Hairgami_Master
38

Seu computador possui uma chave SSH, mas essa chave está associada a outra conta Heroku.

Se você precisar usar as duas contas para aplicativos diferentes no mesmo computador, crie uma nova chave SSH na sua máquina e faça o upload para o Heroku:

$ ssh-keygen

Salve-o como '/Users/User/.ssh/new_id_rsa.pub' quando o prompt solicitar.

$ heroku keys:add /Users/User/.ssh/new_id_rsa.pub 

Você, então, precisa adicionar um host alternativo para heroku.coma sua ~/.ssh/config:

Host heroku-alt
HostName heroku.com
IdentityFile ~/.ssh/new_id_rsa

E atualize o .git/configem seu projeto para usar o alias do host:

[remote "heroku"]
  url = git@heroku-alt:myapp.git
  fetch = +refs/heads/*:refs/remotes/heroku/*

Ao escolher entre herokue heroku-altno controle remoto dos .git/configarquivos de projetos específicos, você pode gerenciar quais projetos usam quais credenciais.

Daniel X Moore
fonte
1
Sim, esse também foi o problema para mim. Acessando duas contas Heroku do mesmo cliente. Obrigado.
Bernard
Eu estou tentando fazer este método, mas "Anfitrião heroku-alt" me dá o erro: Host heroku-alt not found: 3(NXDOMAIN). Estou colocando isso no terminal no Mountain Lion. ~/.ssh/configtambém não existe, apenas um monte de .pubarquivos e um chamado known_hosts. E idéias?
JVG
@ Jascination Você precisará criar ~ / .ssh / config e colocar o conteúdo listado na resposta. Quando você terminar de salvar o arquivo e ele irá conter os Host, HostNamee as IdentityFilelinhas. Deve funcionar bem.
Daniel X Moore
3
Excelente! Esta técnica é tão elegante!
Kinopyo
Homem! Você é incrível. Executar passo a passo finalmente me faz alívio. Obrigado !!
softvar
14

Aqui está uma explicação muito clara que está faltando na documentação do Heroku ou em outras respostas para a pergunta. Pelo menos todas as informações parecem não aparecer em nenhum lugar. Também permite que você entenda o problema de uma maneira que a ferramenta de contas não.

Heroku identifica você de duas maneiras:

O primeiro é em .git / config

[heroku]
    account = acccount_name

Parece permitir que você execute operações básicas usando heroku

A segunda maneira pela qual o heroku o identifica é por qualquer operação que use ssh (git push). O Heroku o identificará pela sua chave ssh, conforme indicado aqui: https://devcenter.heroku.com/articles/keys

Esse par de chaves é usado para criptografia forte e que o identifica exclusivamente como desenvolvedor ao enviar alterações de código.

Portanto, cada conta heroku em que você trabalha terá que enviar uma chave diferente para o heroku ao usar o ssh. Siga qualquer tutorial para criar suas chaves ssh.

A chave é fazer com que o SSH use chaves diferentes para cada conta Heroku. Como você configura isso? Você precisará fazer duas coisas:

1) Você precisará criar um domínio 'fictício' para o seu .ssh / config interceptar e reconfigurar. Isso informará ao ssh o domínio 'real' que você deseja e qual chave especial do ssh usar.

Host heroku.my_unique_key
  HostName heroku.com
  IdentityFile ~/.ssh/identity.heroku.my_unique_key
  IdentitiesOnly yes

2) Altere seu arquivo .git / config para usá-lo ao usar o git push. Em vez de heroku.com, use o domínio fictício definido em seu arquivo .ssh / config

[remote "heroku"]
    url = [email protected]


[remote "heroku"]
    url = [email protected]_unique_key:myapp.git

É isso aí :) Um pouco complicado e um pouco simples ao mesmo tempo. Levei três anos batendo minha cabeça contra a parede e tentativa e erro para descobrir essa informação. Deve estar claramente documentado em algum lugar, mas pelo menos é um começo.

pixelearth
fonte
O único nome de host era o meu problema. Muito obrigado pixelearth.
FluffyJack
Muchos Gracias Por Favor
EE33
9

você precisará criar novas chaves e adicioná-las

especifique um novo nome de arquivo depois de executar

ssh-keygen

então (no meu caso)

heroku keys:add /home/alex/.ssh/alex_heroku_rsa.pub
akmur
fonte
3

Eu tenho o mesmo problema na semana passada. Este link me ajudou. Espero que ajude um pouco. http://devcenter.heroku.com/articles/keys

Benjamin
fonte
Eu vi esse link, tentei remover e adicionar minhas chaves novamente, mas ainda não consigo fazê-lo funcionar.
9111 mre
Você já resolveu esse problema?
Benjamin Benjamin
1
Você pode resumir as instruções neste link? Tentamos evitar respostas apenas de links aqui.
águia cera
Isso explica apenas como gerar chaves e não como gerenciar várias.
Macario
3

No meu caso, heroku keysjá tinha a chave correta listada. Então, tudo que eu precisava fazer era correr ssh-add /path/to/that/keye tudo começou a funcionar bem.

Scott Ford
fonte
2

Também tenho duas contas Heorku e, como alternativa, "convidei" minha conta principal (aquela cuja chave é usada automaticamente pelo Heroku) como colaboradora do meu projeto.

Fabio CR
fonte
1

Só não quero adicionar a solução para usuários do Windows.

  1. Primeiro download "Putty Key generator"

  2. Crie uma chave com ele OBS, você precisa mover o mouse pela área em branco para gerar aleatoriedade.

  3. Salve suas chaves, lembre-se de renomear sua chave para [name] .pub

  4. Corra heroku keys:addno terminal!

Iniciante em Rails
fonte
0

No meu caso, o problema era a versão ssh que eu estava usando. Acabei de definir a variável de ambiente GIT_SSH para outra ("GIT_SSH = / usr / bin / ssh") e tudo funcionou bem para mim.

gfhuertac
fonte