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 un motivo muy fundado, debe usar sudo y, después. asegurarse de que lo está usando con cada comando (probablemente sea mejor usar su para obtener un shell como raíz en ese momento). 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

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@github.com
> 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 github.com port 22.

La conexión debe realizarse en el puerto 22, a menos que se invalide la configuración para usar SSH a través de HTTPS.

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 Cloud, la conexión fallará:

$ ssh -T GITHUB-USERNAME@github.com
> 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 Cloud, puede cambiar la dirección URL remota para usar el usuario "git".

Para verificar tu conexión, debes escribir:

$ ssh -T git@github.com
> 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
    

    Nota: Los comandos eval anteriores inician ssh-agent manualmente en el ambiente. 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 Cloud.

Sugerencia: 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@github.com:

$ ssh -vT git@github.com
> ...
> 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@github.com
> ...
> 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 Cloud 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, haga clic en la foto del perfil y, luego, en Settings (Configuración).

    Screenshot of a user's account menu on GitHub. The menu item "Settings" is outlined in dark orange.

  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, haga clic en la foto del perfil y, luego, en Settings (Configuración).

    Screenshot of a user's account menu on GitHub. The menu item "Settings" is outlined in dark orange.

  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, haga clic en la foto del perfil y, luego, en Settings (Configuración).

    Screenshot of a user's account menu on GitHub. The menu item "Settings" is outlined in dark orange.

  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 Cloud, deberá agregar la clave SSH a GitHub Enterprise Cloud para asociarla con el equipo.

Advertencia: Si ve una clave SSH con la que no está familiarizado en GitHub Enterprise Cloud, elimínela de inmediato y póngase en contacto con con nosotros a través del Soporte técnico de GitHub 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».