Impossibile spingere verso Heroku a causa dell'impronta digitale chiave


131

Sono nuovo su Rails e stavo cercando di distribuire un'app molto semplice su Heroku. Questa è la seconda app che distribuisco e la prima sono stata in grado di farlo bene. Comunque sto avendo dei problemi con questo. Ogni volta che " git push heroku master ", ottengo questo errore:

! La tua chiave con impronta digitale xx: xx: xx: xx: xx: xx: xx: xx: xx: xx: xx: xx: xx: xx: xx: xx non è autorizzata ad> accedere a my_heroku_app.

fatale: l'estremità remota ha riattaccato inaspettatamente

Ho provato a gestire le mie chiavi dopo aver effettuato l'accesso a Heroku. Se digito " heroku keys " nella mia console , ottengo:

Nessuna chiave per myemailaddress.

Tuttavia, se eseguo il comando " chiavi heroku: aggiungi " ottengo

Chiave pubblica esistente trovata: /Users/michele/.ssh/id_rsa.pub Caricamento chiave pubblica ssh /Users/michele/.ssh/id_rsa.pub! L'impronta digitale esiste già. Si prega di utilizzare una chiave SSH per account Heroku

Mi aiuti per favore! Questo è così frustrante, non ho idea di cosa non vada! Grazie

Risposte:


288

Ho avuto lo stesso problema, ho seguito questo post e altri dello stesso tipo senza successo: - ((

Alla fine ho trovato la soluzione: ho dovuto aggiungere la mia nuova identità rsa nella mia macchina!

Quindi, prima di tutto ho creato una nuova chiave rsa:

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

poi l'ho aggiunto alla mia macchina

ssh-add ~/.ssh/id_rsa_heroku

e, infine, ad Heroku

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

Dopo di che,

git push heroku master

ha funzionato come un fascino!

Spero che questo ti aiuti.


47
Questo è stato molto vicino per me. Ma c'era un'altra cosa. Avevo due account heroku. Il primo aveva aggiunto la mia chiave SSH predefinita per la mia macchina. Indipendentemente da ciò che ho fatto cercando di correggere il mio secondo account, non ci sarebbe voluto prima di aver rimosso la mia chiave predefinita dal primo account. SSH-AGENT invierà la prima chiave per impostazione predefinita, causando questo problema. La correzione è creare chiavi specifiche per heroku (non quelle predefinite) per ogni account
Tom Carchrae

13
Ho avuto lo stesso problema di @TomCarchrae. Sono uscito dall'account che sembrava essere stato definitivamente eliminato heroku logout, ho effettuato l' accesso all'altro account ed ho eliminato la chiave RSA predefinita da quell'account. Successivamente sono stato in grado di spingere con questa chiave appena generata.
Ross Allen,

14
Personalmente, ho fatto l'equivalente del ssh-add ~/.ssh/id_rsa_herokumio, anche ssh-add ~/.ssh/identity.heroku.fooperché sto usando anche https://github.com/ddollar/heroku-accounts (un gestore di account multipli per Heroku).
user664833

1
un'altra cosa da tenere a mente: se hai troppe chiavi SSH, non sarà in grado di accedere perché prova le chiavi in ​​ordine (e poi verrai espulso dal login troppi errori). questo sembra essere un difetto con l'agente ssh (in Ubuntu comunque, ma presumo anche altre implementazioni). quindi, se ti stai strappando i capelli, prova a spostare la tua directory ~ / .ssh e avviarne una nuova (puoi quindi tirare i tasti uno per uno).
Tom Carchrae,

7
Puoi influenzare quale chiave viene inviata aggiungendo una voce host in ~ / .ssh / config per heroku.com che punta alla chiave desiderata. Questa è stata una soluzione rapida per me poiché continuava a provare a utilizzare la mia chiave predefinita e non funzionava. Questo probabilmente non sarà d'aiuto nel caso di più account.
salutato il

61

Anch'io ho più chiavi e più account heroku, quindi mi imbatto in questo problema ogni pochi mesi. Come menzionato Giordano Scalzo, Tom Carchrae e user664833, il problema principale è ssh-agent, che controlli usando il ssh-addcomando. La pagina man ( man ssh-add) è in realtà piuttosto chiara e concisa, quindi dai un'occhiata.

Puoi elencare tutte le chiavi che ssh-agent conosce:

ssh-add -l

Puoi eliminare tutte le chiavi che ssh-agent conosce:

ssh-add -D

Oppure elimina una chiave specifica con

ssh-add -d ~/.ssh/id_rsa_example_key_file_use_your_own

Non ti preoccupare! In realtà non stai cancellando i tasti, cambiando solo quelli che ssh-agent tenta automaticamente di usare, ad esempio, quando provi a spingere su heroku. È facile aggiungere ed eliminare le chiavi in ​​base alle necessità, quindi per me, quando sono frustrato da questo problema, il modo più semplice per risolverlo è eliminare tutte le chiavi e aggiungere nuovamente solo quella che voglio usare al momento.

ssh-add -D
ssh-add ~/.ssh/id_rsa_example_use_this_one_i_mean_it

1
questo ha funzionato bene per me, tuttavia, cercando di aggiungere nuovamente il mio tasto SSH predefinito ha continuato a richiedere passphrase (su Mtn Lion), non pensi che ne abbia uno? Riavviato ed è tornato al mio ssh predefinito tutto ok - ho anche trovato questo stackoverflow.com/questions/7927750/… che funziona benissimo
house9

battere la testa contro un muro per un bel po 'su questo, e questo è stato l'ultimo passo richiesto - grazie!
Griswoldbar,

Se hai provato il primo metodo, allora questo (e stai ricevendo un errore di autorizzazione negata (chiave pubblica) quando provi a spingere sul tuo telecomando Heroku) probabilmente hai dimenticato di rieseguire i tasti heroku: aggiungi comando. Comunque grazie mille! Questo è stato per me.
Hairgami_Master il

38

Il tuo computer ha una chiave SSH, ma quella chiave SSH è associata a un altro account Heroku.

Se devi utilizzare entrambi gli account per diverse applicazioni sullo stesso computer, devi creare una nuova chiave SSH sul tuo computer e caricarla su Heroku:

$ ssh-keygen

Assicurati di salvarlo come '/Users/User/.ssh/new_id_rsa.pub' quando ti viene richiesto.

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

È quindi necessario aggiungere un host alternativo per heroku.comal vostro ~/.ssh/config:

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

E quindi aggiorna il .git/confignel tuo progetto per usare l'alias host:

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

Scegliendo tra herokue heroku-altnel remoto dei .git/configfile di progetti specifici è possibile gestire quali progetti utilizzano quali credenziali.


1
Sì, anche quello era il problema per me. Accedere a due account Heroku dallo stesso client. Grazie.
Bernard,

Sto cercando di fare questo metodo, ma "Host Heroku-alt" mi dà l'errore: Host heroku-alt not found: 3(NXDOMAIN). Lo sto mettendo nel terminal di Mountain Lion. ~/.ssh/confignon esiste neanche, solo un mucchio di .pubfile e uno chiamato known_hosts. E idee?
JVG,

@Jascination Dovrai creare ~ / .ssh / config e inserire i contenuti elencati nella risposta. Quando hai finito di salvare il file e conterrà i Host, HostNamee le IdentityFilelinee. Dovrebbe quindi funzionare bene.
Daniel X Moore,

3
Eccellente! Questa tecnica è così elegante!
Kinopyo,

Uomo! Sei fantastico. L'esecuzione passo dopo passo finalmente mi dà sollievo. Grazie !!
softvar,

14

Ecco una spiegazione molto chiara che manca alla documentazione di Heroku o ad altre risposte alla domanda. Almeno tutte le informazioni non sembrano apparire in nessun posto. Ti consente anche di capire il problema in un modo in cui lo strumento account non lo fa.

Heroku ti identifica in 2 modi:

Il primo è in .git / config

[heroku]
    account = acccount_name

Questo sembra consentire di eseguire operazioni di base utilizzando heroku

Il secondo modo in cui heroku ti identifica è tramite qualsiasi operazione che usi ssh (git push). Heroku ti identificherà con la tua chiave ssh, come indicato qui: https://devcenter.heroku.com/articles/keys

Questa coppia di chiavi viene utilizzata per la crittografia avanzata e ti identifica in modo univoco come sviluppatore quando invii modifiche al codice.

Quindi ogni account heroku su cui lavori dovrà inviare una chiave diversa a heroku quando usi ssh. Segui qualsiasi tutorial per creare le tue chiavi ssh.

La chiave sta facendo in modo che SSH utilizzi chiavi diverse per ciascun account Heroku. Come si configura questo? Dovrai fare 2 cose:

1) Dovrai creare un dominio 'fittizio' che il tuo .ssh / config intercetterà e riconfigurerà. Questo dirà a ssh il dominio "reale" che desideri e quale chiave ssh speciale usare.

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

2) Cambia il tuo .git / config per usarlo quando usi git push. Invece di heroku.com, usa il dominio fittizio che hai impostato nel tuo .ssh / config

[remote "heroku"]
    url = git@heroku.com.git


[remote "heroku"]
    url = git@heroku.my_unique_key:myapp.git

Questo è tutto :) Un po 'complicato e un po' semplice allo stesso tempo. Mi ci sono voluti 3 anni di sbattere la testa contro il muro, tentativi ed errori per scoprire queste informazioni. Dovrebbe essere chiaramente documentato da qualche parte, ma almeno è un inizio.


La cosa unica del nome host era il mio problema. Grazie mille pixelearth.
FluffyJack

Muchos Gracias Por Favor
EE33

9

dovrai creare nuove chiavi e aggiungerle

specificare un nuovo nome file dopo l'esecuzione

ssh-keygen

quindi (nel mio caso)

heroku keys:add /home/alex/.ssh/alex_heroku_rsa.pub

3

Ho lo stesso problema la scorsa settimana. Questo link mi ha aiutato. Spero che ti aiuti un po '. http://devcenter.heroku.com/articles/keys


Ho visto quel link, ho provato a rimuovere e aggiungere di nuovo le mie chiavi, tuttavia non riesco ancora a farlo funzionare.
martedì

Hai risolto questo problema?
Benjamin,

1
Puoi riassumere le istruzioni a questo link? Cerchiamo di evitare il collegamento solo risposte qui.
aquila di cera

Questo spiega solo come generare chiavi e non come gestirne di più.
Macario,

3

Nel mio caso, heroku keysavevo già elencato la chiave corretta. Quindi, tutto quello che dovevo fare era correre ssh-add /path/to/that/keye poi tutto ha iniziato a funzionare bene.


2

Ho anche due account Heorku e come soluzione ho "invitato" il mio account principale (quello la cui chiave viene utilizzata automaticamente da Heroku) come collaboratore del mio progetto.


1

Non voglio aggiungere la soluzione per gli utenti Windows.

  1. Primo download "Putty Key generator"

  2. Crea una chiave con essa OBS che ti serve per spostare il mouse sull'area vuota per generare casualità.

  3. Salvare le chiavi, basta ricordare di rinominare la chiave in [nome] .pub

  4. Corri heroku keys:addnel terminal!


0

Nel mio caso il problema era la versione ssh che stavo usando. Ho appena impostato la variabile d'ambiente GIT_SSH su un'altra ("GIT_SSH = / usr / bin / ssh") e tutto ha funzionato bene per me.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.