Permiso de Github denegado: ssh add agent no tiene identidades


148

Esta es la primera vez que accedo a GitHub y no tengo experiencia en el uso de una consola. Estoy en una MacBook usando Bash. Cuando intento acceder a GitHub, obtengo esto:

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.

Intenté seguir las instrucciones en la página de Github sobre el permiso denegado.

Cuando uso ssh -vT git@github.com, obtengo lo siguiente:

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).

A continuación, eval "$(ssh-agent -s)"devuelve "Agente pid 2314", sin embargo, ssh-add -ldevuelve "El agente no tiene identidades".

Y ahí es donde estoy atrapado.


¿ Tiene una clave SSH creada? ¿Lo tienes en tu cuenta de github? ¿Tienes la clave en tu mac?
Etan Reisner

Estaba buscando la respuesta a esa pregunta (no estoy familiarizado con todo este sistema), y encontré esto: mac.github.com Solucionó todos mis problemas. Lo recomiendo altamente. ¡Gracias por empujar en la dirección correcta, Etan!
Oscuro

44
Es posible que desee agregar una respuesta a esta pregunta (con más detalles sobre cómo resolvió su problema) y aceptar su respuesta.
Etan Reisner

Bien, he enviado la respuesta. SO me dice que solo puedo aceptarlo en 2 horas.
Oscuro

Respuestas:


194

Detalles completos en esta respuesta .

En resumen, cuando se ssh-add -ldevuelve “El agente no tiene identidad”, que significa que las claves utilizadas por ssh(almacenados en archivos, como ~/.ssh/id_rsa, ~/.ssh/id_dsa, etc.) están perdidos, que no son conocidas por ssh-agent, que es el agente de autenticación, o que sus permisos están configurados incorrectamente (por ejemplo, mundo escribible).

Si faltan sus claves o si no ha generado ninguna, úselas ssh-keygen -t rsay luego ssh-addagréguelas.

Si existen claves pero no las conoce ssh-agent(como si estuvieran en una carpeta no estándar), use ssh-add /path/to/my-non-standard-ssh-folder/id_rsapara agregarlas.

Vea esta respuesta si tiene problemas con ssh-addssh-agent.


44
Gracias @Doedoe por un enlace a una respuesta breve y agradable. Y para aquellos que tienen claves (es decir, varias cuentas Git), es posible que deba usarlas ssh-add /path/to/keyXpara cada una, especialmente si tienen nombres no estándar. Detalles aquí: stackoverflow.com/questions/3225862/… (una buena respuesta)
tuk0z

Gracias por esto. Me quedé atrapado aquí .. pero me di cuenta que necesito para ejecutar ssh-add de nuevo después de resolver la parte permisos de la cuestión. Después de esto, ssh -vT git@github.comno funcionó. Necesitaba agregar la ruta absoluta como el comentador mencionado anteriormente. Entonces, todo fue salsa.
jungledev

2
En el segundo caso, olvidé mi frase de contraseña y la recuperé usando help.github.com/articles/how-do-i-recover-my-ssh-key-passphrase
Malder

111

prueba esto:

ssh-add ~/.ssh/id_rsa

trabajó para mi


55
Hola, bienvenido a SO. Explique su código para que sus usuarios puedan entender lo que está sucediendo. Salud.
Cthulhu

44
Cuando reinicia, sus claves se han ido y tiene que 'agregarlas' nuevamente.
Louwki

@Louwki Sí ... eso es súper molesto. ¿Sabes una forma de evitar eso?
Chris Cirefice

3
@ChrisCirefice solo hace el ssh-add con un parámetro para agregarlos a su llavero permanentemente. ssh-add -K ~ / .ssh / [su-clave-privada]
Louwki

1
En mi caso, los permisos de archivo eran incorrectos para la clave privada. Corregido por chmod 600 ~/.ssh/id_rsa, entoncesssh-add ~/.ssh/id_rsa
Morteza Ziyae

39

LA RESPUESTA 2019 para macOS Sierra y High Sierra y Catalina:

PD: la mayoría de las otras respuestas te harán crear una nueva clave ssh ... pero no necesitas hacerlo :)

Como se describe en detalle en https://openradar.appspot.com/27348363 , macOS / OS X hasta que Yosemite solía recordar las claves SSH agregadas por comandossh-add -K <key>

Así que aquí están los 4 pasos que tuve que seguir para que funcione:

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

2: Agregue lo siguiente en~/.ssh/config

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

3: asegúrese de eliminar cualquier entrada de gitconfig que use osxkeychain helper:

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

4: reinicie su terminal para que surta efecto.


3
Gran respuesta, ¡iba a mencionar esto yo mismo! Aparentemente, OS X 10.12.2 y versiones posteriores no cargan automáticamente las identidades en ssh-agent (lo cual personalmente creo que es una decisión de uso realmente estúpida, pero entiendo las implicaciones de seguridad). Por lo tanto, debe modificar la configuración de SSH para cargarlos manualmente. Solo deseo que la salida del error conduzca mejor a una solución, en lugar de una hora de búsqueda en Internet.
Chris Cirefice

12

Me he quedado atrapado por un tiempo en el mismo problema, que finalmente resolví.

Mi problema : no pude ejecutar ninguna inserción. Pude comprobar y ver mi control remoto (usando git remote -v), pero cuando ejecuté git push origin master, regresó: Permission denied (publickey). fatal: Could not read from remote repository.y así.

Cómo lo resolví:

  • Genere una clave usando ssh-keygen -t rsa. Introducir un nombre para el archivo de clave (cuando se le preguntó) fue inútil.
  • Entonces podría agregar la clave (a git) : ssh-add /Users/federico/.ssh/id_rsaque devolvió con éxitoIdentity added: /Users/myname/.ssh/id_rsa (/Users/myname/.ssh/id_rsa)
  • Agregué la clave SSH a github usando esta página de ayuda .
  • Después de haber probado todos los comandos en la página de ayuda 'Permiso denegado clave pública' de Github, solo el ssh-add -lcomando funcionó / ​​parecía útil (después de haber ejecutado los pasos anteriores), devolvió con éxito mi clave. El último paso le muestra dónde verificar su clave pública en su página de GitHub. Y este comando le ayudará a comprobar todas sus claves: ls -al ~/.ssh.

¡Entonces el comando push finalmente funcionó!

Espero que esto sea de ayuda ! Mucha suerte a todos.


7

Ejecute los siguientes comandos:

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

Vaya a su cuenta de Github: https://github.com/settings/profile

1) Haga clic: claves SSH y GPG

2) Nueva clave SSH y pegarla allí

3) Añadir clave SSH

¡Hecho!


Sí, si ha seguido los otros pasos para crear el archivo id_rsa.pub, copie y pegue esa línea pbcopy, que copia la clave en su portapapeles y siga las instrucciones de @zouhair, github necesita conocer su clave. Particularmente si estás usando 2FA.
davidrynn

Estoy un poco confundido porque los documentos actuales dicen que git crea github_rsa / github_rsa.pub. Tengo ambos en mi directorio /.ssh y, sin embargo, parece que no puedo "obtener permiso". He creado copias en el mismo directorio usando id_rsa en vano.
Mark Löwe el

6

en primer lugar, debe ir a su directorio ssh
para este tipo siguiendo el comando en su terminal en mac o lo que use en la ventana

cd ~/.ssh

ahora está en ssh,
aquí puede encontrar todas sus claves / archivos ssh relacionados con todos sus proyectos. ahora, escriba el siguiente comando para mostrarle si hay alguna clave ssh disponible

ls

esto le mostrará todos los ssh disponibles, en mi caso había dos
ahora, necesitará iniciar un agente para agregar un ssh. Para este tipo siguiendo el comando

eval "$(ssh-agent -s)"

ahora por último, pero no menos importante, agregará un ssh en este tipo de agente siguiendo el comando

ssh-add ~/.ssh/your-ssh

reemplazar

reemplace your-ssh con su nombre de archivo ssh, que obtuvo una lista de segundo paso ls command


5

Esto podría causar que en cualquier terminal nueva, la identificación del agente sea diferente. Debe agregar la clave privada para el agente

$ ssh-add <path to your private key>

1

Un elemento adicional que me di cuenta es que, por lo general, la carpeta .ssh se crea en su carpeta raíz en Mac OS X / Users /. Si intenta usar ssh -vT git@github.com desde otra carpeta, le dará un error incluso si ha agregado la clave correcta.

Debe agregar la clave nuevamente (ssh-add 'ruta correcta a id_rsa') desde la carpeta actual para autenticarse con éxito (suponiendo que ya haya cargado la clave en su perfil en Git)


1

Esto funcionó para mí:
chmod 700 .ssh chmod 600 .ssh/id_rsa chmod 644 .ssh/id_rsa.pub

Luego, escriba esto: ssh-add ~/.ssh/id_rsa


No creo que la pregunta sea sobre ~/.sshpermisos. Aún así, podría mejorar enormemente su respuesta agregando el comando completo (aquí chmod) y explicando qué hace esto y por qué es necesario.
Robert

0

Después de luchar por mucho tiempo, finalmente pude resolver este problema en Windows. Para mí, la variable de usuario env GIT_SSH estaba configurada para apuntar a

"C: \ Archivos de programa (x86) \ WinScp \ PuTTY \ plink.exe"

que se instaló junto con WinScp. Cambié el señalador para usar ssh.exe predeterminado que viene con git-scm "C: \ Archivos de programa \ Git \ usr \ bin \ ssh.exe"


0

Pasos para BitBucket:

si no desea generar una nueva clave, SALTE ssh-keygen

ssh-keygen -t rsa 

Copie la clave pública al portapapeles:

clip < ~/.ssh/id_rsa.pub

Inicie sesión en Bit Bucket: vaya a Ver perfil -> Configuración -> Claves SSH (en la pestaña Seguridad) Haga clic en Agregar clave, pegue la clave en el cuadro, agregue un título descriptivo

Regrese a Git Bash:

ssh-add -l

Deberías obtener:

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

Ahora: git pulldebería funcionar


0

Tuve este problema después de restaurar un disco duro desde una copia de seguridad.

Mi problema: pude verificar y ver mi control remoto (usando git remote -v), pero cuando ejecuté git push origin master, me devolvió: Permiso denegado (clave pública). fatal: no se pudo leer desde el repositorio remoto.

Ya tenía una carpeta SSH y claves SSH, y al agregarlas a través de Terminal ( ssh-add /path/to/my-ssh-folder/id_rsa) agregué con éxito mi identidad, pero aún no podía presionar y todavía recibí el mismo error. Generar una nueva clave fue una mala idea para mí, porque estaba vinculada a otros permisos muy seguros en AWS.

Resultó que el enlace entre la llave y mi perfil de Github se había roto.

Solución: volver a agregar la clave a Github en Perfil> Configuración> SSH y GPG resolvió el problema.

Además: mi cuenta tenía configurada la autenticación de 2 factores. Cuando este sea el caso, si Terminal solicita credenciales, use su nombre de usuario, pero NO su contraseña de Github. Para la autenticación de 2 factores, debe usar su código de autenticación (para mí, esto fue generado por Authy en mi teléfono, y tuve que copiarlo en la Terminal para el pw).

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.