2012-04-01 7 views
31

Nota: No soy un principiante, y lo he hecho un billón de veces, pero por alguna razón hoy decidió no funcionar.¿Por qué mi clave SSH no funciona para conectarse a github?

Recibo el mensaje de error Permission denied (publickey). al tratar de conectarme a github vía SSH o al intentar clonar un repositorio, incluso después de rehacer la clave ssh y agregarla a "claves SSH" en mi cuenta.

Esto es lo que he intentado hacer diez veces hoy sin éxito:

  1. hacer una llave con ssh-keygen.
  2. abra ~/.ssh/id_rsa.pub con Gedit o Notepad ++ y copie los contenidos.
  3. Vaya a Configuración de la cuenta en github.com
  4. Ir a claves SSH
  5. Haga clic en el botón Agregar clave.
  6. dar a la clave un título
  7. pegar la clave en el cuadro de clave.
  8. Guarde la clave (ingrese mi contraseña de github para verificar).

Y ahora, cuando intento hacer ssh github.com, simplemente no funciona ... ¿Qué del mundo? ¿Estoy demasiado cansado en este momento o me estoy perdiendo algo?

Aquí está la salida de 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

Si se desplaza hacia abajo en la página de indicaciones, le indica que use 'ssh-add' para agregar la clave. ¿Hiciste eso? –

+1

¿Estás intentando entrar en github, o presionar/jalar a un repositorio con autenticación ssh? – YenTheFirst

+0

Si está en Windows, ¿definió '% HOME%'? Y de todos modos, un 'ssh -vvv github.com' ayudaría: http://stackoverflow.com/questions/6018551/heroku-push-master-ssh-problem/6018945#6018945 y http://stackoverflow.com/questions/922210/unable-to-git-push-master-to-github/922461 # 922461 – VonC

Respuesta

34

El GitHub ssh setup menciones probar su conexión con GitHub:

$ ssh -T [email protected] 

que siguen el ssh uri syntax (también ilustrado en "this answer").

Pero lo hizo:

ssh github.com 

(sin ningún tipo de usuario).En ese caso, ssh vuelve a la SCP syntax, que se basa en un archivo ~/.ssh/config, con una sección "github.com", a la lista:

  • el usuario
  • el nombre de host
  • (y opcionalmente el lugar clave pública , pero por defecto probará ~/.ssh/id_rsa.pub)
1

GitHub recientemente se sometió a una auditoría de todas las claves. Vaya a the key section of your account para volver a aprobarlo.

+0

Ya he aprobado/eliminado todas las claves SSH. Estoy agregando nuevas claves ahora (vea mi pregunta de nuevo) pero simplemente no funcionará ... He hecho esto muchas veces antes sin ningún problema. – trusktr

17

Después de crear un archivo de configuración (~/.ssh/config) funcionó. Esto es lo que tenía que poner en ella:

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

Gracias a @VonC para que me lleva hasta allí en los comentarios.

No entiendo por qué nunca lo necesité antes.

+0

Lo necesitaría si su dirección ssh de alguna manera sigue la sintaxis de SCP Vea mi respuesta para más detalles. – VonC

+1

Gracias, este funciona para mí. :) – Emmy

+1

¡Esto me salvó! Después de horas de intentar cualquier otra cosa. ¡Gracias amigo! –

39

Tuve un problema similar, github no usó mi clave SSH. Siempre tuve que ingresar mi nombre de usuario y contraseña.

He estado buscando en .git/config, bajo [ "origen" a distancia] hubo:

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

o

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

cambié la línea en

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

y luego funcionó.

+3

Buena captura. La forma git de hacerlo sin editar el archivo de configuración sería la siguiente: 1. 'git remote', que listará todos tus repositorios remotos. En mi caso fue 'origen' 2.' git remote eliminar '3.' git remote agregar origen [email protected]: nombre de usuario/nombre-depósito.git' – nomad

+0

Además de las sugerencias de @nomad , también necesitará usar '--set-upstream origin master' la próxima vez que presione (o quizás antes de eso) – Kyrstellaine

Cuestiones relacionadas