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.

¿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@hostname
> 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:

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

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@[hostname]:

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

    Icono Settings (Parámetros) en la barra de usuario

  5. In the user settings sidebar, click SSH and GPG keys. Authentication keys

  6. Compare la lista de claves SSH con la salida del comando ssh-add. Listado de claves SSH en 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, haga clic en la foto del perfil y, luego, en Settings (Configuración).

    Icono Settings (Parámetros) en la barra de usuario

  5. In the user settings sidebar, click SSH and GPG keys. Authentication keys

  6. Compare la lista de claves SSH con la salida del comando ssh-add. Listado de claves SSH en 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, haga clic en la foto del perfil y, luego, en Settings (Configuración).

    Icono Settings (Parámetros) en la barra de usuario

  5. In the user settings sidebar, click SSH and GPG keys. Authentication keys

  6. Compare la lista de claves SSH con la salida del comando ssh-add. Listado de claves SSH en GitHub Enterprise Server

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.

Advertencia: Si ve una clave SSH que no conoce bien en GitHub Enterprise Server, elimínela de inmediato y póngase 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 más información, vea "Revisión de las claves SSH".