2012-04-01 3 views
31

Nota: non sono un newb, e ho fatto questo un giro di volte, ma per qualche motivo oggi ha deciso di non funzionare.Perché la mia chiave SSH non funziona per connettersi a github?

Continuo a ricevere il messaggio di errore Permission denied (publickey). durante il tentativo di connettersi a github tramite SSH o quando si tenta di clonare un repository, anche dopo aver rifatto la chiave ssh e aggiungendolo a "Chiavi SSH" nel mio account.

Questo è quello che ho cercato di fare dieci volte oggi senza successo:

  1. fare una chiave con ssh-keygen.
  2. apri ~/.ssh/id_rsa.pub con Gedit o Notepad ++ e copia il contenuto.
  3. Vai alle impostazioni degli account su github.com
  4. Vai chiavi SSH
  5. Fare clic sul pulsante Aggiungi chiave.
  6. dare alla chiave un titolo
  7. incollare la chiave nella casella chiave.
  8. Salva la chiave (inserire la mia password di GitHub per verificare).

E ora, quando provo a fare ssh github.com semplicemente non funzionerà .... Cosa diavolo? Sono semplicemente troppo stanco in questo momento o mi sto perdendo qualcosa?

Ecco l'output ssh -vvv github.com

OpenSSH_5.9p1, OpenSSL 1.0.0f 4 Jan 2012 
debug1: Reading configuration data /etc/ssh/ssh_config 
debug2: ssh_connect: needpriv 0 
debug1: Connecting to github.com [207.97.227.239] port 22. 
debug1: Connection established. 
debug3: Incorrect RSA1 identifier 
debug3: Could not load "/home/trusktr/.ssh/id_rsa" as a RSA1 public key 
debug1: identity file /home/trusktr/.ssh/id_rsa type 1 
debug1: identity file /home/trusktr/.ssh/id_rsa-cert type -1 
debug1: identity file /home/trusktr/.ssh/id_dsa type -1 
debug1: identity file /home/trusktr/.ssh/id_dsa-cert type -1 
debug1: identity file /home/trusktr/.ssh/id_ecdsa type -1 
debug1: identity file /home/trusktr/.ssh/id_ecdsa-cert type -1 
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.1p1 Debian-5github2 
debug1: match: OpenSSH_5.1p1 Debian-5github2 pat OpenSSH* 
debug1: Enabling compatibility mode for protocol 2.0 
debug1: Local version string SSH-2.0-OpenSSH_5.9 
debug2: fd 3 setting O_NONBLOCK 
debug3: load_hostkeys: loading entries for host "github.com" from file "/home/trusktr/.ssh/known_hosts" 
debug3: load_hostkeys: found key type RSA in file /home/trusktr/.ssh/known_hosts:16 
debug3: load_hostkeys: loaded 1 keys 
debug3: order_hostkeyalgs: prefer hostkeyalgs: [email protected],[email protected],ssh-rsa 
debug1: SSH2_MSG_KEXINIT sent 
debug1: SSH2_MSG_KEXINIT received 
debug2: kex_parse_kexinit: ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1 
debug2: kex_parse_kexinit: [email protected],[email protected],ssh-rsa,[email protected],[email protected],[email protected],[email protected],[email protected],ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,ssh-dss 
debug2: kex_parse_kexinit: aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,[email protected] 
debug2: kex_parse_kexinit: aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,[email protected] 
debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,[email protected],hmac-sha2-256,hmac-sha2-256-96,hmac-sha2-512,hmac-sha2-512-96,hmac-ripemd160,[email protected],hmac-sha1-96,hmac-md5-96 
debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,[email protected],hmac-sha2-256,hmac-sha2-256-96,hmac-sha2-512,hmac-sha2-512-96,hmac-ripemd160,[email protected],hmac-sha1-96,hmac-md5-96 
debug2: kex_parse_kexinit: none,[email protected],zlib 
debug2: kex_parse_kexinit: none,[email protected],zlib 
debug2: kex_parse_kexinit: 
debug2: kex_parse_kexinit: 
debug2: kex_parse_kexinit: first_kex_follows 0 
debug2: kex_parse_kexinit: reserved 0 
debug2: kex_parse_kexinit: diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1 
debug2: kex_parse_kexinit: ssh-rsa,ssh-dss 
debug2: kex_parse_kexinit: aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour128,arcfour256,arcfour,aes192-cbc,aes256-cbc,[email protected],aes128-ctr,aes192-ctr,aes256-ctr 
debug2: kex_parse_kexinit: aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour128,arcfour256,arcfour,aes192-cbc,aes256-cbc,[email protected],aes128-ctr,aes192-ctr,aes256-ctr 
debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,[email protected],hmac-ripemd160,[email protected],hmac-sha1-96,hmac-md5-96 
debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,[email protected],hmac-ripemd160,[email protected],hmac-sha1-96,hmac-md5-96 
debug2: kex_parse_kexinit: none,[email protected] 
debug2: kex_parse_kexinit: none,[email protected] 
debug2: kex_parse_kexinit: 
debug2: kex_parse_kexinit: 
debug2: kex_parse_kexinit: first_kex_follows 0 
debug2: kex_parse_kexinit: reserved 0 
debug2: mac_setup: found hmac-md5 
debug1: kex: server->client aes128-ctr hmac-md5 none 
debug2: mac_setup: found hmac-md5 
debug1: kex: client->server aes128-ctr hmac-md5 none 
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent 
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP 
debug2: dh_gen_key: priv key bits set: 122/256 
debug2: bits set: 510/1024 
d ebug1: SSH2_MSG_KEX_DH_GEX_INIT sent 
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY 
debug1: Server host key: RSA 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48 
debug3: load_hostkeys: loading entries for host "github.com" from file "/home/trusktr/.ssh/known_hosts" 
debug3: load_hostkeys: found key type RSA in file /home/trusktr/.ssh/known_hosts:16 
debug3: load_hostkeys: loaded 1 keys 
debug3: load_hostkeys: loading entries for host "207.97.227.239" from file "/home/trusktr/.ssh/known_hosts" 
debug3: load_hostkeys: found key type RSA in file /home/trusktr/.ssh/known_hosts:16 
debug3: load_hostkeys: loaded 1 keys 
debug1: Host 'github.com' is known and matches the RSA host key. 
debug1: Found key in /home/trusktr/.ssh/known_hosts:16 
debug2: bits set: 497/1024 
debug1: ssh_rsa_verify: signature correct 
debug2: kex_derive_keys 
debug2: set_newkeys: mode 1 
debug1: SSH2_MSG_NEWKEYS sent 
debug1: expecting SSH2_MSG_NEWKEYS 
debug2: set_newkeys: mode 0 
debug1: SSH2_MSG_NEWKEYS received 
debug1: Roaming not allowed by server 
debug1: SSH2_MSG_SERVICE_REQUEST sent 
debug2: service_accept: ssh-userauth 
debug1: SSH2_MSG_SERVICE_ACCEPT received 
debug2: key: /home/trusktr/.ssh/id_rsa (0x14cce60) 
debug2: key: [email protected] (0x14ce2b0) 
debug2: key: /home/trusktr/.ssh/id_dsa ((nil)) 
debug2: key: /home/trusktr/.ssh/id_ecdsa ((nil)) 
debug1: Authentications that can continue: publickey 
debug3: start over, passed a different list publickey 
debug3: preferred publickey,keyboard-interactive,password 
debug3: authmethod_lookup publickey 
debug3: remaining preferred: keyboard-interactive,password 
debug3: authmethod_is_enabled publickey 
debug1: Next authentication method: publickey 
debug1: Offering RSA public key: /home/trusktr/.ssh/id_rsa 
debug3: send_pubkey_test 
debug2: we sent a publickey packet, wait for reply 
debug1: Authentications that can continue: publickey 
debug1: Offering RSA public key: [email protected] 
debug3: send_pubkey_test 
debug2: we sent a publickey packet, wait for reply 
debug1: Authentications that can continue: publickey 
debug1: Trying private key: /home/trusktr/.ssh/id_dsa 
debug3: no such identity: /home/trusktr/.ssh/id_dsa 
debug1: Trying private key: /home/trusktr/.ssh/id_ecdsa 
debug3: no such identity: /home/trusktr/.ssh/id_ecdsa 
debug2: we did not send a packet, disable method 
debug1: No more authentication methods to try. 
Permission denied (publickey). 
+0

Se si scorre verso il basso in quella pagina di indicazioni, viene indicato di utilizzare 'ssh-add' per aggiungere la chiave. Sei stato tu? –

+1

stai provando a ssh in github, o push/pull a un repository con autenticazione ssh? – YenTheFirst

+0

Se sei su Windows, hai definito '% HOME%'? E comunque, un 'ssh -vvv github.com' sarebbe d'aiuto: http://stackoverflow.com/questions/6018551/heroku-push-master-ssh-problem/6018945#6018945 e http://stackoverflow.com/questions/922210/unable-to-git-push-master-to-github/922461 # 922461 – VonC

risposta

34

Il GitHub ssh setup menzioni Verifica della connessione a GitHub con:

$ ssh -T [email protected] 

che seguono il ssh uri syntax (illustrato anche in "this answer").

Ma l'hai fatto:

ssh github.com 

(senza alcun utente).In tal caso, ssh torna alla SCP syntax, che si basa su un file ~/.ssh/config, con una sezione "github.com", per elencare:

  • l'utente
  • l'hostname
  • (e facoltativamente la posizione chiave pubblica , ma di default cercherà ~/.ssh/id_rsa.pub)
1

GitHub di recente ha subito una verifica di tutte le chiavi. Vai a the key section of your account per riattivarlo.

+0

Ho già approvato/cancellato tutte le chiavi SSH. Sto aggiungendo nuove chiavi ora (vedi di nuovo la mia domanda) ma semplicemente non funzionerà ... L'ho fatto molte volte prima senza problemi. – trusktr

17

Dopo aver creato un file di configurazione (~/.ssh/config) ha funzionato. Questo è quello che ho dovuto mettere in esso:

Host github.com 
User git 
Port 22 
Hostname github.com 
IdentityFile ~/.ssh/id_rsa 
TCPKeepAlive yes 
IdentitiesOnly yes 

Grazie a @VonC per portandomi a lì nei commenti.

Non capisco perché non ho mai avuto bisogno di questo prima però.

+0

Avresti bisogno di questo se il tuo indirizzo ssh segue in qualche modo la sintassi SCP Vedi la mia risposta per maggiori dettagli. – VonC

+1

Grazie, questo funziona per me. :) – Emmy

+1

Questo mi ha salvato !!! Dopo ore di provare qualcos'altro. Grazie amico! –

39

ho avuto un problema simile, GitHub non ha usato la mia chiave SSH. Ho sempre dovuto inserire il mio nome utente e la mia password.

Sono stato a guardare .git/config, sotto [ "origine" remota] c'era:

url = http://github.com/path/to/repository 

o

url = https://github.com/path/to/repository 

ho cambiato la linea in

url = ssh://[email protected]/path/to/repository 

e poi ha funzionato.

+3

Buona cattura. Il modo giusto per farlo senza modificare il file di configurazione sarebbe il seguente: 1. 'git remote', che elencherà tutti i tuoi repository remoti. Nel mio caso era 'origin' 2.' git remote remove '3. git remote add all'origine [email protected]: username/repository-name.git' – nomad

+0

Oltre ai suggerimenti di @ nomad , dovrai anche usare '--set-upstream master master 'la prossima volta che premi (o forse prima) – Kyrstellaine