Generar una nueva clave SSH y agregarla al ssh-agent

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.

Acerca de la generación de llaves SSH

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, consulta la sección "Verificar si hay llaves 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 lasnotas de lanzamiento de OpenSSH 8.2.

Si no deseas volver a ingresar tu contraseña cada vez que usas tu clave SSH, puedes agregar tu clave al agente SSH, el cual administrará tus claves SSH y recordará tu contraseña.

Generar una nueva clave SSH

  1. Abre la TerminalTerminalGit Bash.

  2. Pega el siguiente texto, que sustituye tu dirección de correo electrónico en GitHub.

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

    Nota: Si estás utilizando un sistema tradicional que no es compatible con el algoritmo Ed25519, utiliza:

    $ 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.
  1. Cuando se te indique "Ingresar un archivo donde guardar la clave", presiona Intro. Al hacerlo aceptas la ubicación predeterminada del archivo.

    > Enter a file in which to save the key (/Users/you/.ssh/id_algorithm): [Press enter]
    > Enter a 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/algorithm): [Press enter]
  2. Donde se indica, escribe una contraseña segura. Para obtener más información, consulta la sección "Trabajar con contraseñas de llaves 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. Cuando agregues tu clave SSH al agente, usa el comando macOS ssh-add y no una aplicación instalada por macports, homebrew o alguna otra fuente externa.

  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, puede que necesites utilizar acceso de raíz ejecutando sudo -s -H antes de iniciar el ssh-agent, o puede que necesites utilizar exec ssh-agent bash o exec ssh-agent zsh para ejecutar el 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 ssh-agent y almacenar las contraseñas en tu keychain.

    • Primero, revisa si tu 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 tu archivo ~/.ssh/config y luego modifícalo para que contenga las siguientes líneas. 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 *
        AddKeysToAgent yes
        UseKeychain yes
        IdentityFile ~/.ssh/id_ed25519
      

      Nota: Si eliges no agregar una frase de acceso a tu llave, deberás omitir la línea UseKeychain.

      Nota: Si ves un error como este

      /Users/USER/.ssh/config: line 16: Bad configuration option: usekeychain
      

      y una línea de configuración adicional en tu sección Host *:

      Host *
        IgnoreUnknown UseKeychain
      
  3. Agrega tu llave privada SSH al ssh-agent y almacena tu contraseña en tu keychain. Si creaste tu llave con un nombre diferente o si estás agregando una llave existente que tenga un nombre diferente, reemplaza a id_ed25519 en el comando con el nombre de tu archivo de llave privada.

    $ ssh-add -K ~/.ssh/id_ed25519

    Nota: La opción -K es una versión estándar de Apple de ssh-add, que almacena la contraseña en tu keychain cuando agregas una llave SSH al ssh-agent. Si eliges no agregar una frase de acceso a tu llave, ejecuta el comando sin la opción -K.

    Si no tienes instalada la versión estándar de Apple, puedes recibir un mensaje de error. Para obtener más información sobre cómo resolver este error, consulta "Error: ssh-add: opción ilegal -- K".

  4. Agrega la llave SSH a tu cuenta en GitHub. Para obtener más información, consulta la sección "Agregar una llave SSH nueva a tu cuenta de GitHub".

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

  1. Verifica que el ssh-agent se esté ejecutando. Puedes utilizar las instrucciones de "Autolanzamiento del ssh-agent" que se encuentran en Trabajar con frases de acceso de las llaves SSH" o iniciarlo manualmente:

    # start the ssh-agent in the background
    $ eval "$(ssh-agent -s)"
    > Agent pid 59566
  2. Agrega tu llave privada SSH al ssh-agent. Si creaste tu llave con un nombre diferente o si estás agregando una llave existente que tenga un nombre diferente, reemplaza a id_ed25519 en el comando con el nombre de tu archivo de llave privada.

    $ ssh-add ~/.ssh/id_ed25519
  3. Agrega la llave SSH a tu cuenta en GitHub. Para obtener más información, consulta la sección "Agregar una llave 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, puede que necesites utilizar acceso de raíz ejecutando sudo -s -H antes de iniciar el ssh-agent, o puede que necesites utilizar exec ssh-agent bash o exec ssh-agent zsh para ejecutar el ssh-agent.

  2. Agrega tu llave privada SSH al ssh-agent. Si creaste tu llave con un nombre diferente o si estás agregando una llave existente que tenga un nombre diferente, reemplaza a id_ed25519 en el comando con el nombre de tu archivo de llave privada.

    $ ssh-add ~/.ssh/id_ed25519
  3. Agrega la llave SSH a tu cuenta en GitHub. Para obtener más información, consulta la sección "Agregar una llave 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, consulta el "Error: Unknown key type"

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

  2. Abre la TerminalTerminalGit Bash.

  3. Pega el siguiente texto, sustitutyendo la dirección de correo electrónico por tu cuenta de GitHub.

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

    Nota: Si el comando falla y recibes el error invalid format o feature not supported, puede que estés utilizando una llave de seguridad de hardware que no sea compatible con 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 solicite teclear una contraseña, teclea Enter.

    > Enter passphrase (empty for no passphrase): [Type a passphrase]
    > Enter same passphrase again: [Type passphrase again]
  7. Agrega la llave SSH a tu cuenta en GitHub. Para obtener más información, consulta la sección "Agregar una llave SSH nueva a tu cuenta de GitHub".

Leer más

¿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.