Error: Permiso denegado (publickey)

Un error de "Permiso denegado" significa que el servidor rechazó tu conexión. Esto puede suceder por varias razones. A continuación se explican los ejemplos más comunes.

¿El comando sudo se debe usar con Git?

No deberías estar usando el comando sudo con Git. Si tienes una muy buena razón para usar sudo, asegúrate de estar usándolo con todos los comandos (probablemente es mejor que uses su para obtener un shell como raíz en este punto). Si generas claves SSH sin sudo y luego intentas usar un comando como sudo git push, no estarás usando las mismas claves que generaste.

Verifica si estás conectado al servidor correcto

Escribir no es fácil. Todos los sabemos. Escribe con cuidado; no podrás conectarte con "githib.com" ni a "guthub.com". En algunos casos, una red corporativa puede generar problemas al tratar de resolver también el registro de DNS.

Para asegurarte de que te estás conectando al dominio correcto, puedes ingresar el siguiente comando:

$ ssh -vT git@nombre de host
> OpenSSH_8.1p1, LibreSSL 2.7.3
> debug1: Reading configuration data /Users/you/.ssh/config
> debug1: Reading configuration data /etc/ssh/ssh_config
> debug1: /etc/ssh/ssh_config line 47: Applying options for *
> debug1: Connecting to nombre de host port 22.

La conexión debe establecerse en el puerto 22.

Siempre usa el usuario "git"

Todas las conexiones, incluidas las de URL remotas, deben hacerse como el usuario "git". Si intentas conectarte con tu nombre de usuario de GitHub Enterprise Server, la conexión fallará:

$ ssh -T GITHUB-USERNAME@nombre de host
> Permission denied (publickey).

Si tu conexión ha fallado y estás usando una URL remota con tu nombre de usuario de GitHub Enterprise Server, puedes cambiar tu URL remota para usar el usuario "git".

Para verificar tu conexión, debes escribir:

$ ssh -T git@nombre de host
> Hi username! You've successfully authenticated...

Asegúrate de tener una clave que esté en uso

  1. Abre la TerminalTerminalGit Bash.
  2. Verifica si tienes una llave privada generada y cargada en SSH.
    # start the ssh-agent in the background
    $ eval "$(ssh-agent -s)"
    > Agent pid 59566
    $ ssh-add -l -E sha256
    > 2048 SHA256:274ffWxgaxq/tSINAykStUL7XWyRNcRTlcST1Ei7gBQ /Users/USERNAME/.ssh/id_rsa (RSA)

Si tienes GitHub Desktop instalado, puedes usarlo para clonar repositorios y no manejar claves SSH.

  1. Si estás usando Git Bash, activa el ssh-agent:

    # inicia el ssh-agent en segundo plano
    $ eval "$(ssh-agent -s)"
    > Agent pid 59566

    Si estás usando otro símbolo de terminal, como Git para Windows, activa el ssh-agent:

    # start the ssh-agent in the background
    $ eval $(ssh-agent -s)
    > Agent pid 59566
  2. Verifica si tienes una llave privada generada y cargada en SSH.

    $ ssh-add -l -E sha256
    > 2048 SHA256:274ffWxgaxq/tSINAykStUL7XWyRNcRTlcST1Ei7gBQ /Users/USERNAME/.ssh/id_rsa (RSA)
  1. Abre la TerminalTerminalGit Bash.
  2. Verifica si tienes una llave privada generada y cargada en SSH.
    $ ssh-add -l -E sha256
    > 2048 SHA256:274ffWxgaxq/tSINAykStUL7XWyRNcRTlcST1Ei7gBQ /Users/USERNAME/.ssh/id_rsa (RSA)

The ssh-add command should print out a long string of numbers and letters. If it does not print anything, you will need to generate a new SSH key and associate it with GitHub Enterprise Server.

Tip: On most systems the default private keys (~/.ssh/id_rsa and ~/.ssh/identity) are automatically added to the SSH authentication agent. You shouldn't need to run ssh-add path/to/key unless you override the file name when you generate a key.

Getting more details

You can also check that the key is being used by trying to connect to git@[hostname]:

$ ssh -vT git@nombre de host
> ...
> debug1: identity file /Users/you/.ssh/id_rsa type -1
> debug1: identity file /Users/you/.ssh/id_rsa-cert type -1
> debug1: identity file /Users/you/.ssh/id_dsa type -1
> debug1: identity file /Users/you/.ssh/id_dsa-cert type -1
> ...
> debug1: Authentications that can continue: publickey
> debug1: Next authentication method: publickey
> debug1: Trying private key: /Users/you/.ssh/id_rsa
> debug1: Trying private key: /Users/you/.ssh/id_dsa
> debug1: No more authentication methods to try.
> Permission denied (publickey).

En ese ejemplo, no teníamos ninguna llave para que usara SSH. El "-1" al final de las líneas que dicen "identity file" (identidad del archivo) significan que SSH no pudo encontrar un archivo para usar. Luego, en las líneas que indican "Trying private key" (Probando llave privada) también indica que no se encontró ningún archivo. Si existiera un archivo, esas líneas dirían "1" y "Ofreciendo llave privada", respectivamente:

$ ssh -vT git@nombre de host
> ...
> debug1: identity file /Users/you/.ssh/id_rsa type 1
> ...
> debug1: Authentications that can continue: publickey
> debug1: Next authentication method: publickey
> debug1: Offering RSA public key: /Users/you/.ssh/id_rsa

Verifica si la llave pública está asociada a tu cuenta

Debes indicarle tu llave privada a GitHub Enterprise Server para establecer una conexión segura.

  1. Abre Terminal.

  2. Inicia el agente SSH en segundo plano.

    $ eval "$(ssh-agent -s)"
    > Agent pid 59566
  3. Busca tu huella digital de llave pública y anótala.

    $ ssh-add -l -E sha256
    > 2048 SHA256:274ffWxgaxq/tSINAykStUL7XWyRNcRTlcST1Ei7gBQ /Users/USERNAME/.ssh/id_rsa (RSA)
  4. En la esquina superior derecha de cualquier página, da clic en tu foto de perfil y después da clic en Configuración. Icono Settings (Parámetros) en la barra de usuario

  5. En la barra lateral de configuración de usuario, da clic en Llaves SSH y GPG. Llaves de autenticación

  6. Compare the list of SSH keys with the output from the ssh-add command. SSH key listing in GitHub Enterprise Server

  1. Abre la línea de comando.

  2. Inicia el agente SSH en segundo plano.

    $ ssh-agent -s
    > Agent pid 59566
  3. Busca tu huella digital de llave pública y anótala.

    $ ssh-add -l -E sha256
    > 2048 SHA256:274ffWxgaxq/tSINAykStUL7XWyRNcRTlcST1Ei7gBQ /Users/USERNAME/.ssh/id_rsa (RSA)
  4. En la esquina superior derecha de cualquier página, da clic en tu foto de perfil y después da clic en Configuración. Icono Settings (Parámetros) en la barra de usuario

  5. En la barra lateral de configuración de usuario, da clic en Llaves SSH y GPG. Llaves de autenticación

  6. Compare the list of SSH keys with the output from the ssh-add command. SSH key listing in GitHub Enterprise Server

  1. Abre Terminal.

  2. Inicia el agente SSH en segundo plano.

    $ eval "$(ssh-agent -s)"
    > Agent pid 59566
  3. Busca tu huella digital de llave pública y anótala. Si estás usando OpenSSH 6.7 o una versión anterior:

    $ ssh-add -l
    > 2048 a0:dd:42:3c:5a:9d:e4:2a:21:52:4e:78:07:6e:c8:4d /Users/USERNAME/.ssh/id_rsa (RSA)

    Si estás usando OpenSSH 6.8 o una versión más reciente:

    $ ssh-add -l -E md5
    > 2048 MD5:a0:dd:42:3c:5a:9d:e4:2a:21:52:4e:78:07:6e:c8:4d /Users/USERNAME/.ssh/id_rsa (RSA)
  4. En la esquina superior derecha de cualquier página, da clic en tu foto de perfil y después da clic en Configuración. Icono Settings (Parámetros) en la barra de usuario

  5. En la barra lateral de configuración de usuario, da clic en Llaves SSH y GPG. Llaves de autenticación

  6. Compara la lista de claves SSH con el resultado que arroja el comando ssh-add. Lista de claves SSH en GitHub Enterprise Server

Si no ves tu llave pública en GitHub Enterprise Server, será necesario que agregues tu clave SSH a GitHub Enterprise Server para asociarla con tu computadora.

Advertencia: Si ves una clave SSH que no te resulta familiar en GitHub Enterprise Server, elimínala de inmediato y contáctate con el administrador de tu sitio para recibir más ayuda. Una llave pública no identificada puede indicar un posible problema de seguridad. Para obtener más información, consulta "Revisar tus claves SSH".

¿Te ayudó este documento?

Política de privacidad

¡Ayúdanos a hacer geniales estos documentos!

Todos los documentos de GitHub son de código abierto. ¿Notas algo que esté mal o que no sea claro? Emite una solicitud de cambios.

Haz una contribución

O, aprende cómo contribuir.