Autorizzazione Github negata: ssh add agent non ha identità


148

Questa è la prima volta che accedo a GitHub e non ho esperienza con una console. Sono su un MacBook con Bash. Quando provo ad accedere a GitHub, ottengo questo:

git clone git@github.com:dhulihan/league-of-legends-data-scraper.git
Cloning into 'league-of-legends-data-scraper'...
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

Ho provato a seguire le istruzioni sulla pagina di Github sull'autorizzazione negata.

Quando uso ssh -vT git@github.com, ottengo quanto segue:

OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011
debug1: Reading configuration data /etc/ssh_config
debug1: /etc/ssh_config line 20: Applying options for *
debug1: Connecting to github.com [192.30.252.129] port 22.
debug1: Connection established.
debug1: identity file /Users/XXXX/.ssh/id_rsa type -1
debug1: identity file /Users/XXXX/.ssh/id_rsa-cert type -1
debug1: identity file /Users/XXXX/.ssh/id_dsa type -1
debug1: identity file /Users/XXXX/.ssh/id_dsa-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.2
debug1: Remote protocol version 2.0, remote software version libssh-0.6.0
debug1: no match: libssh-0.6.0
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-sha1 none
debug1: kex: client->server aes128-ctr hmac-sha1 none
debug1: sending SSH2_MSG_KEXDH_INIT
debug1: expecting SSH2_MSG_KEXDH_REPLY
debug1: Server host key: RSA 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48
debug1: Host 'github.com' is known and matches the RSA host key.
debug1: Found key in /Users/XXXX/.ssh/known_hosts:1
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Trying private key: /Users/XXXX/.ssh/id_rsa
debug1: Trying private key: /Users/XXXX/.ssh/id_dsa
debug1: No more authentication methods to try.
Permission denied (publickey).

Successivamente, eval "$(ssh-agent -s)"restituisce "Agente pid 2314", tuttavia ssh-add -lrestituisce "L'agente non ha identità".

Ed è qui che sono bloccato.


Hai creato una chiave SSH? Lo hai elencato con il tuo account github? Hai la chiave sul tuo mac?
Etan Reisner,

Stavo cercando la risposta a quella domanda (non avendo familiarità con l'intero sistema) e ho trovato questo: mac.github.com Ha risolto tutti i miei problemi. Lo consiglio vivamente. Grazie per la spinta nella giusta direzione, Etan!
Buio,

4
Potresti voler aggiungere una risposta a questa domanda (con ulteriori dettagli su come ha risolto il tuo problema) e accettare la tua risposta.
Etan Reisner,

Ok, ho inviato la risposta. SO mi sta dicendo che posso accettarlo solo in 2 ore.
Dark

Risposte:


194

Dettagli completi in questa risposta .

In sintesi, quando ssh-add -lrestituisce “L'agente non ha identità”, ciò significa che le chiavi utilizzate da ssh(memorizzati in file come ~/.ssh/id_rsa, ~/.ssh/id_dsae così via) sono mancanti, non sono noti per ssh-agent, che è l'agente di autenticazione, o che i loro permessi non sono impostati correttamente (ad esempio, scrivibili dal mondo).

Se mancano le tue chiavi o se non le hai generate, usa ssh-keygen -t rsa, quindi ssh-addper aggiungerle.

Se le chiavi esistono ma non sono note ssh-agent(come se si trovassero in una cartella non standard), utilizzare ssh-add /path/to/my-non-standard-ssh-folder/id_rsaper aggiungerle.

Vedi questa risposta se hai problemi con ssh-addssh-agent.


4
Grazie @Doedoe per un link a una risposta piacevole e breve. E per coloro che dispongono di chiavi (ad es. Più account Git), potrebbe essere necessario utilizzarli ssh-add /path/to/keyXper ciascuno, in particolare se hanno nomi non standard. Dettagli qui: stackoverflow.com/questions/3225862/… (una bella risposta)
tuk0z

Grazie per questo. Mi sono bloccato qui .. ma mi sono reso conto che devo eseguire di ssh-add nuovo dopo aver risolto la parte delle autorizzazioni del problema. Dopo questo, ssh -vT git@github.comnon ha funzionato. Ho dovuto aggiungere il percorso assoluto come il commentatore sopra menzionato. Quindi, è stato tutto sugo.
jungledev,

2
Nel secondo caso ho dimenticato la mia passphrase e l'ho recuperata usando help.github.com/articles/how-do-i-recover-my-ssh-key-passphrase
Malder

111

prova questo:

ssh-add ~/.ssh/id_rsa

ha funzionato per me


5
Ciao, benvenuto in SO. Spiega il tuo codice, in modo che gli altri utenti possano capire cosa sta succedendo. Saluti.
Cthulhu,

4
Quando riavvii le chiavi non ci sono più e devi "aggiungerle di nuovo".
Louwki,

@Louwki Sì ... è davvero fastidioso. Sai un modo per aggirare questo?
Chris Cirefice,

3
@ChrisCirefice esegui semplicemente ssh-add con un parametro per aggiungerli permanentemente al tuo portachiavi. ssh-add -K ~ / .ssh / [your-private-key]
Louwki

1
Nel mio caso, le autorizzazioni per i file erano errate per la chiave privata. Risolto da chmod 600 ~/.ssh/id_rsa, quindissh-add ~/.ssh/id_rsa
Morteza Ziyae

39

LA RISPOSTA 2019 per macOS Sierra e High Sierra e Catalina:

PS: la maggior parte delle altre risposte ti farà creare una nuova chiave ssh ... ma non è necessario farlo :)

Come descritto in dettaglio su https://openradar.appspot.com/27348363 , macOS / OS X fino a quando Yosemite ricordava le chiavi SSH aggiunte dal comandossh-add -K <key>

Quindi, ecco i 4 passaggi che ho dovuto fare per farlo funzionare:

1: ssh-add ~/.ssh/PATH_TO_YOUR_SSH_PRIVATE_KEY (e.g. ~/.ssh/id_rsa)

2: aggiungi quanto segue~/.ssh/config

Host * 
  AddKeysToAgent yes
  UseKeychain yes
  IdentityFile PATH_TO_YOUR_SSH_PRIVATE_KEY (e.g. ~/.ssh/id_rsa)

3: assicurati di rimuovere qualsiasi voce gitconfig che utilizza l'helper di osxkeychain:

 https://github.com/gregory/dotfiles/commit/e38000527fb1a82b577f2dcf685aeefd3b78a609#diff-6cb0f77b38346e0fed47293bdc6430c6L48

4: riavvia il tuo terminale affinché abbia effetto.


3
Ottima risposta, stavo per menzionarlo da solo! Apparentemente, OS X 10.12.2 e versioni successive non caricano automaticamente le identità in ssh-agent (che personalmente ritengo sia una decisione di usabilità davvero stupida, ma comprendo le implicazioni di sicurezza). Pertanto, è necessario modificare la configurazione SSH per caricarli manualmente. Vorrei solo che l'output dell'errore avrebbe portato a una soluzione, piuttosto che a un'ora di ricerca in Internet.
Chris Cirefice,

12

Sono rimasto bloccato per un po 'sullo stesso problema, che alla fine ho risolto.

Il mio problema : non ho potuto eseguire alcuna spinta. Ho potuto controllare e vedere il mio telecomando (usando git remote -v), ma quando ho eseguito git push origin master, è tornato: Permission denied (publickey). fatal: Could not read from remote repository.e così.

Come l'ho risolto:

  • Ho generato una chiave usandossh-keygen -t rsa . L'immissione di un nome per il file chiave (quando richiesto) era inutile.
  • Ho potuto quindi aggiungere la chiave (per Git) : ssh-add /Users/federico/.ssh/id_rsa, che ha restituito con successoIdentity added: /Users/myname/.ssh/id_rsa (/Users/myname/.ssh/id_rsa)
  • Ho aggiunto la chiave SSH a github usando questa pagina di aiuto .
  • Avendo provato tutti i comandi nella pagina di aiuto di "Permesso negato chiave pubblica" di Github, solo il ssh-add -lcomando ha funzionato / sembrava utile (dopo aver eseguito i passaggi precedenti), ha restituito correttamente la mia chiave. L'ultimo passaggio ti mostra dove controllare la tua chiave pubblica nella tua pagina GitHub. E questo comando vi aiuterà a controllare tutte le chiavi: ls -al ~/.ssh.

Quindi il comando push alla fine ha funzionato!

Spero che questo possa aiutare! Buona fortuna a tutti.


7

Esegui i seguenti comandi:

ssh-keygen -t rsa
ssh-add /Users/*yourUserNameHere*/.ssh/id_rsa** 
pbcopy < ~/.ssh/id_rsa.pub**

Vai al tuo account Github: https://github.com/settings/profile

1) Fare clic: chiavi SSH e GPG

2) Nuova chiave SSH e passala lì

3) Aggiungi chiave SSH

Fatto!


Sì - se hai seguito gli altri passaggi della creazione del file id_rsa.pub, copia e incolla quella riga pbcopy, che copia la chiave negli appunti e segui le istruzioni di @zouhair - github deve conoscere la tua chiave. Soprattutto se stai usando 2FA.
davidrynn,

Sono un po 'confuso perché i documenti attuali dicono che git crea github_rsa / github_rsa.pub. Ho entrambi nella mia directory /.ssh e tuttavia non riesco a "ottenere il permesso". Ho creato copie nella stessa directory usando id_rsa senza risultati.
Mark Löwe,

6

prima di tutto devi andare nella tua directory ssh
per questo tipo seguendo il comando nel tuo terminale in mac o qualunque cosa tu usi nella finestra

cd ~/.ssh

ora è nella ssh
qui puoi trovare tutte le tue chiavi / file ssh relative a tutti i tuoi progetti. ora, digita il seguente comando per mostrare se è disponibile una chiave ssh

ls

questo ti mostrerà tutti gli ssh disponibili, nel mio caso ce ne sono stati due
ora, dovrai avviare un agente per aggiungere un ssh in esso. Per questo tipo seguente comando

eval "$(ssh-agent -s)"

ora ultimo ma non meno importante aggiungerai un ssh in questo tipo di agente seguendo il comando

ssh-add ~/.ssh/your-ssh

sostituire

sostituisci your-ssh con il nome del tuo file ssh che ti dà un elenco dal secondo passaggio ls command


5

Ciò potrebbe causare per ogni nuovo terminale, l'id agente è diverso. Devi aggiungere la chiave privata per l'agente

$ ssh-add <path to your private key>

1

Un ulteriore elemento che ho realizzato è che in genere la cartella .ssh viene creata nella cartella principale in Mac OS X / Users /. Se si tenta di utilizzare ssh -vT git@github.com da un'altra cartella, verrà visualizzato un errore anche se è stata aggiunta la chiave corretta.

Devi aggiungere nuovamente la chiave (ssh-aggiungi 'percorso corretto a id_rsa') dalla cartella corrente per autenticarti correttamente (supponendo che tu abbia già caricato la chiave sul tuo profilo in Git)


1

Questo ha funzionato per me:
chmod 700 .ssh chmod 600 .ssh/id_rsa chmod 644 .ssh/id_rsa.pub

Quindi, digitare questo: ssh-add ~/.ssh/id_rsa


Non penso che la domanda riguardi le ~/.sshautorizzazioni. Tuttavia, potresti migliorare notevolmente la tua risposta aggiungendo il comando completo (qui chmod) e spiegando cosa fa e perché è necessario.
Robert,

0

Dopo aver lottato a lungo, sono stato finalmente in grado di risolvere questo problema su Windows, per me la variabile env utente GIT_SSH è stata impostata per puntare a

"C: \ Programmi (x86) \ WinScp \ PuTTY \ plink.exe"

che è stato installato insieme a WinScp. Ho cambiato il puntamento per usare ssh.exe predefinito che viene fornito con git-scm "C: \ Programmi \ Git \ usr \ bin \ ssh.exe"


0

Passaggi per BitBucket:

se non si desidera generare una nuova chiave, SKIP ssh-keygen

ssh-keygen -t rsa 

Copia la chiave pubblica negli appunti:

clip < ~/.ssh/id_rsa.pub

Accedi al bucket bit: vai a Visualizza profilo -> Impostazioni -> Chiavi SSH (nella scheda Sicurezza) Fai clic su Aggiungi chiave, incolla la chiave nella casella, aggiungi un titolo descrittivo

Torna a Git Bash:

ssh-add -l

Dovresti ricevere :

2048 SHA256:5zabdekjjjaalajafjLIa3Gl/k832A /c/Users/username/.ssh/id_rsa (RSA)

Ora: git pulldovrebbe funzionare


0

Ho avuto questo problema dopo aver ripristinato un disco rigido da un backup.

Il mio problema: ho potuto controllare e vedere il mio telecomando (usando git remote -v), ma quando ho eseguito git push origin master, ha restituito: Autorizzazione negata (chiave pubblica). fatale: impossibile leggere dal repository remoto.

Avevo già una cartella SSH e chiavi SSH e aggiungendole tramite Terminal ( ssh-add /path/to/my-ssh-folder/id_rsa) ho aggiunto correttamente la mia identità, ma non riuscivo ancora a spingere e continuavo a ricevere lo stesso errore. Generare una nuova chiave è stata una cattiva idea per me, perché era legata ad altre autorizzazioni molto sicure su AWS.

Si è scoperto che il collegamento tra la chiave e il mio profilo Github si era interrotto.

Soluzione: aggiungere nuovamente la chiave a Github in Profilo> Impostazioni> Chiavi SSH e GPG ha risolto il problema.

Inoltre: il mio account aveva impostato l'autenticazione a 2 fattori. In questo caso, se Terminal richiede credenziali, utilizza il tuo nome utente, ma NON la tua password Github. Per l'autenticazione a 2 fattori, è necessario utilizzare il codice di autenticazione (per me, questo è stato generato da Authy sul mio telefono e ho dovuto copiarlo in Terminal per il pw).

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.