Skip to main content

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.

Platform navigation

¿Se debe usar el comando sudo o los privilegios elevados con Git?

No debería utilizar el comando sudo con Git, ni los privilegios elevados, tales como los permisos de administrador.

Si tiene una razón muy buena , debe usar sudo y, después, asegúrese de que la usa con cada comando. Si genera claves SSH sin sudo e intenta usar un comando como sudo git push, no estará usando las mismas claves que ha generado.

Verifica si estás conectado al servidor correcto

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

Shell
ssh -vT git@HOSTNAME

Debería ver este resultado:

> 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 HOSTNAME port 22.

La conexión debe realizarse 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@HOSTNAME
> Permission denied (publickey).

Si se ha producido un error en la conexión y usa una dirección URL remota con el nombre de usuario de GitHub Enterprise Server, puede cambiar la dirección URL remota para usar el usuario "git".

Para verificar tu conexión, debes escribir:

Shell
ssh -T git@HOSTNAME

Debería ver este resultado:

> Hi USERNAME! You've successfully authenticated...

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

  1. Abra 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 ha instalado GitHub Desktop, puede usarlo para clonar repositorios y no tener que utilizar claves SSH.

  1. Si usa Git Bash, active ssh-agent:

    # start the ssh-agent in the background
    $ eval "$(ssh-agent -s)"
    > Agent pid 59566
    

    Si usa otro símbolo del sistema de terminal, como Git para Windows, active ssh-agent:

    # start the ssh-agent in the background
    $ eval $(ssh-agent -s)
    > Agent pid 59566
    

    Note

    Los comandos eval anteriores inician ssh-agent manualmente en el entorno. Estos comandos pueden producir un error si ssh-agent ya se ejecuta como un servicio del sistema en segundo plano. Si esto sucede, se recomienda comprobar la documentación pertinente para el ambiente.

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

El comando ssh-add debe imprimir una cadena larga de números y letras. Si no imprime nada, deberá generar una nueva clave SSH y asociarla a GitHub Enterprise Server.

Tip

En la mayoría de los sistemas, las claves privadas predeterminadas ~/.ssh/id_rsa y ~/.ssh/identity se agregan automáticamente al agente de autenticación SSH. No debe ejecutarse ssh-add path/to/key, a menos que invalide el nombre de archivo al generar una clave.

Más detalles

También puede comprobar que la clave se está usando. Para ello, intente conectarse a git@HOSTNAME:

Shell
ssh -vT git@HOSTNAME

Se ve un resultado como este:

> ...
> 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 este ejemplo, SSH no encontró ninguna clave.

  • El "-1" al final de las líneas que dicen "archivo de identidad" significan que SSH no pudo encontrar un archivo para usar.
  • En las líneas "Probando llave privada” se indica que no se encontró ningún archivo.

Si existiera un archivo, esas líneas indicarían "1" y "Ofreciendo clave pública", como en esta salida:

> ...
> 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 en GitHub, haga clic en la fotografía de perfil y luego en Configuración.

  5. En la sección "Acceso" de la barra lateral, haz clic en Claves SSH y GPG.

  6. Compare la lista de claves SSH con la salida del comando ssh-add.

  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 en GitHub, haga clic en la fotografía de perfil y luego en Configuración.

  5. En la sección "Acceso" de la barra lateral, haz clic en Claves SSH y GPG.

  6. Compare la lista de claves SSH con la salida del comando ssh-add.

  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 en GitHub, haga clic en la fotografía de perfil y luego en Configuración.

  5. En la sección "Acceso" de la barra lateral, haz clic en Claves SSH y GPG.

  6. Compare la lista de claves SSH con la salida del comando ssh-add.

Si no ve la clave pública en GitHub Enterprise Server, deberá agregar la clave SSH a GitHub Enterprise Server para asociarla con el equipo.

Warning

Si ves una clave SSH que no te resulta familiar en GitHub Enterprise Server, elimínala de inmediato y ponte en contacto con el administrador del sitio para obtener más ayuda. Una clave pública no identificada puede indicar un posible problema de seguridad. Para obtener más información, vea «Revisar tus claves SSH».