Skip to main content

Generación de una nueva clave SSH y adición al agente SSH

Una vez que has comprobado las claves SSH existentes, puedes generar una nueva clave SSH para usarla para la autenticación y luego agregarla al ssh-agent.

Platform navigation

Acerca de las frases de contraseña de clave SSH

Puedes acceder y escribir datos en repositorios de GitHub.com mediante SSH (protocolo Secure Shell). Al conectarse a través de SSH, se realiza la autenticación mediante un archivo de clave privada en el equipo local. Para más información, consulta "Acerca de SSH".

Al generar una clave SSH, puedes agregar una frase de contraseña para proteger aún más la clave. Siempre que uses la clave, debes escribir la frase de contraseña. Si la clave tiene una frase de contraseña y no quieres escribir la frase de contraseña cada vez que uses la clave, puedes agregar la clave al agente SSH. El agente SSH administra las claves SSH y recuerda la frase de contraseña.

Si todavía no tienes una llave SSH, debes generar una nueva para utilizarla para autenticación. Si no estás seguro si ya tienes una llave SSH, puedes verificar si hay llaves existentes. Para obtener más información, vea «Comprobar tus claves SSH existentes».

Si quieres utilizar una llave de seguridad de hardware para autenticarte en GitHub, debes generar una llave SSH nueva para esta. Debes conectar tu llave de seguridad de hardware a tu computadora cuando te autentiques con el par de llaves. Para obtener más información, consulta las notas de la versiónde OpenSSH 8.2.

Generar una nueva clave SSH

Puedes generar una nueva clave SSH en el equipo local. Después de generar la clave, puede agregar la clave pública a la cuenta en GitHub.com para habilitar la autenticación para las operaciones de Git a través de SSH.

Nota: En GitHub se ha mejorado la seguridad mediante la eliminación de los tipos de clave antiguos y no seguros el 15 de marzo de 2022.

A partir de esa fecha, ya no se admiten las claves DSA (ssh-dss). No puedes agregar claves DSA nuevas a tu cuenta personal en GitHub.com.

Las claves RSA (ssh-rsa) con valid_after antes del 2 de noviembre de 2021 pueden seguir usando cualquier algoritmo de firma. Las llaves RSA que se generaron después de esta fecha deberán utilizar un algoritmo de firma de tipo SHA-2. Algunos clientes más angituos podrían necesitar actualizarse para poder utilizar firmas de tipo SHA-2.

  1. Abra TerminalTerminalGit Bash.

  2. Pega el texto siguiente, reemplazando el correo electrónico usado en el ejemplo por tu dirección de correo electrónico de GitHub.

    ssh-keygen -t ed25519 -C "your_email@example.com"
    

    Nota: Si usas un sistema heredado que no admite el algoritmo Ed25519, usa:

     ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
    

    Esto crea una llave SSH utilizando el correo electrónico proporcionado como etiqueta.

    > Generating public/private ALGORITHM key pair.
    

    Cuando se te pida: "Introduce un archivo en el que se pueda guardar la clave", teclea Enter para aceptar la ubicación de archivo predeterminada. Ten en cuenta que si ya creaste claves SSH anteriormente, ssh-keygen puede pedirte que vuelvas a escribir otra clave. En este caso, se recomienda crear una clave SSH con nombre personalizado. Para ello, escribe la ubicación de archivo predeterminada y reemplaza id_ALGORITHM por el nombre de clave personalizado.

    > Enter a file in which to save the key (/Users/YOU/.ssh/id_ALGORITHM): [Press enter]
    
    > Enter file in which to save the key (/c/Users/YOU/.ssh/id_ALGORITHM):[Press enter]
    
    > Enter a file in which to save the key (/home/YOU/.ssh/id_ALGORITHM):[Press enter]
    
  3. Cuando se le pida, escriba una frase de contraseña segura. Para obtener más información, vea «Trabajar con contraseñas de clave SSH».

    > Enter passphrase (empty for no passphrase): [Type a passphrase]
    > Enter same passphrase again: [Type passphrase again]
    

Agregar tu clave SSH al ssh-agent

Antes de agregar una llave SSH nueva al ssh-agent para que administre tus llaves, debes haber verificado si habían llaves SSH existentes y haber generado una llave SSH nueva. Al agregar la clave SSH al agente, usa el comando ssh-add de macOS predeterminado y no una aplicación instalada por macports, homebrew o algún otro origen externo.

  1. Inicia el agente SSH en segundo plano.

    $ eval "$(ssh-agent -s)"
    > Agent pid 59566
    

    Dependiendo de tu ambiente, puede que necesites utilizar un comando diferente. Por ejemplo, es posible que tenga que usar el acceso raíz mediante la ejecución de sudo -s -H antes de iniciar ssh-agent, o bien que tenga que usar exec ssh-agent bash o exec ssh-agent zsh ejecutar ssh-agent.

  2. Si estás usando macOS Sierra 10.12.2 o una versión posterior, deberás modificar tu archivo ~/.ssh/config para cargar las claves automáticamente en el agente ssh-agent y almacenar las contraseñas en tu cadena de claves.

    • En primer lugar, comprueba si el archivo ~/.ssh/config existe en la ubicación predeterminada.

      $ open ~/.ssh/config
      > The file /Users/YOU/.ssh/config does not exist.
      
    • Si el archivo no existe, créalo.

      touch ~/.ssh/config
      
    • Abre el archivo ~/.ssh/config y, a continuación, modifica el archivo para que contenga las líneas siguientes. Si tu llave SSH tiene un nombre o ruta diferentes que el código de ejemplo, modifica el nombre de archivo o ruta para que coincida con tu configuración actual.

      Host github.com
        AddKeysToAgent yes
        UseKeychain yes
        IdentityFile ~/.ssh/id_ed25519
      

      Notas:

      • Si decides no agregar una frase de contraseña a la clave, debes omitir la línea UseKeychain.

      • Si ves un error Bad configuration option: usekeychain, agrega una línea adicional a la sección Host *.github.com de la configuración.

        Host github.com
          IgnoreUnknown UseKeychain
        
  3. Agrega tu llave privada SSH al ssh-agent y almacena tu contraseña en tu keychain. Si has creado tu clave con otro nombre o si vas a agregar una clave existente que tiene otro nombre, reemplaza id_ed25519 en el comando por el nombre de tu archivo de clave privada.

    ssh-add --apple-use-keychain ~/.ssh/id_ed25519
    

    Nota: La opción --apple-use-keychain almacena la frase de contraseña en tu cadena de claves cuando agregas una clave SSH al ssh-agent. Si eliges no agregar una frase de contraseña a tu clave, ejecuta el comando sin la opción --apple-use-keychain.

    La opción --apple-use-keychain está en la versión estándar de Apple de ssh-add. En las versiones de macOS anteriores a Monterey (12.0), las marcas --apple-use-keychain y --apple-load-keychain usaban la sintaxis -K y -A, respectivamente.

    Si no tienes instalada la versión estándar de Apple de ssh-add, recibirás un mensaje de error. Para obtener más información, vea «Error: ssh-add: opción ilegal -- apple-use-keychain».

    Si te sigue pidiendo la frase de contraseña, es posible que tengas que agregar el comando al archivo ~/.zshrc (o el archivo ~/.bashrc de Bash).

  4. Agrega la clave pública de SSH a tu cuenta en GitHub. Para obtener más información, vea «Agregar una clave SSH nueva a tu cuenta de GitHub».

Si ha instalado GitHub Desktop, puede usarlo para clonar repositorios y no tener que utilizar claves SSH.

  1. En una nueva ventana de PowerShell con privilegios elevados de administrador, asegúrate de que el agente ssh se esté ejecutando. Puede usar las instrucciones de "Auto-lanzamiento ssh-agent" en "Trabajar con contraseñas de clave SSH" o iniciarla manualmente:

    # start the ssh-agent in the background
    Get-Service -Name ssh-agent | Set-Service -StartupType Manual
    Start-Service ssh-agent
    
  2. En una ventana de terminal sin permisos elevados, agregue la clave privada SSH al agente ssh. Si has creado tu clave con otro nombre o si vas a agregar una clave existente que tiene otro nombre, reemplaza id_ed25519 en el comando por el nombre de tu archivo de clave privada.

    ssh-add c:/Users/YOU/.ssh/id_ed25519
    
  3. Agrega la clave pública de SSH a tu cuenta en GitHub. Para obtener más información, vea «Agregar una clave SSH nueva a tu cuenta de GitHub».

  1. Inicia el agente SSH en segundo plano.

    $ eval "$(ssh-agent -s)"
    > Agent pid 59566
    

    Dependiendo de tu ambiente, puede que necesites utilizar un comando diferente. Por ejemplo, es posible que tenga que usar el acceso raíz mediante la ejecución de sudo -s -H antes de iniciar ssh-agent, o bien que tenga que usar exec ssh-agent bash o exec ssh-agent zsh ejecutar ssh-agent.

  2. Agrega tu llave privada SSH al ssh-agent.

    Si has creado tu clave con otro nombre o si vas a agregar una clave existente que tiene otro nombre, reemplaza id_ed25519 en el comando por el nombre de tu archivo de clave privada.

    ssh-add ~/.ssh/id_ed25519
    
  3. Agrega la clave pública de SSH a tu cuenta en GitHub. Para obtener más información, vea «Agregar una clave SSH nueva a tu cuenta de GitHub».

Generar una llave SSH nueva para una llave de seguridad de hardware

Si estás utilizando macOS o Linux, puede que necesites actualizar tu cliente SSH o instalar un cliente SSH nuevo antes de generar una llave SSH nueva. Para obtener más información, vea «Error: Unknown key type».

  1. Insterta tu clave de seguridad de hardware en tu computadora.

  2. Abra TerminalTerminalGit Bash.

  3. Pega el texto siguiente, reemplazando la dirección de correo electrónico usada en el ejemplo por la dirección de correo electrónico asociada a tu cuenta en GitHub.

    ssh-keygen -t ed25519-sk -C "your_email@example.com"
    
    ssh-keygen -t ed25519-sk -C "your_email@example.com"
    
    ssh-keygen -t ed25519-sk -C "your_email@example.com"
    

    Nota: Si se produce un error en el comando y recibes los errores invalid format o feature not supported, puede que estés usando una clave de seguridad de hardware que no admite el algoritmo Ed25519. En vez de esto, ingresa el siguiente comando.

     ssh-keygen -t ecdsa-sk -C "your_email@example.com"
    
  4. Cuando se te solicite, pulsa el botón en tu llave de seguridad de hardware.

  5. Cuando se te pida "Ingresar un archivo en donde se pueda guardar la llave", teclea Enter para aceptar la ubicación predeterminada.

    > Enter a file in which to save the key (/Users/YOU/.ssh/id_ed25519_sk): [Press enter]
    
    > Enter a file in which to save the key (c:\Users\YOU\.ssh\id_ed25519_sk):[Press enter]
    
    > Enter a file in which to save the key (/home/YOU/.ssh/id_ed25519_sk):[Press enter]
    
  6. Cuando se te pida que escribas una frase de contraseña, presiona Entrar.

    > Enter passphrase (empty for no passphrase): [Type a passphrase]
    > Enter same passphrase again: [Type passphrase again]
    
  7. Agrega la clave pública de SSH a tu cuenta en GitHub. Para obtener más información, vea «Agregar una clave SSH nueva a tu cuenta de GitHub».