Cómo configurar el inicio de sesión sin contraseña en Mac OS y Linux

 

Generalidades

Este artículo te muestra cómo configurar la conexión SSH del usuario de tu sitio web a tu servidor DreamHost para que ya no tengas que ingresar la contraseña.

Antecedentes

Una vez que configures un usuario shell e intentes iniciar sesión a través de SSH, verás que debes ingresar tu contraseña cada vez. Si deseas evitar ingresarla cada vez, puedes configurar el inicio de sesión sin contraseña. De esta manera, podrás iniciar sesión automáticamente de inmediato sin necesidad de ingresarla.

Cómo configurar el inicio de sesión sin contraseña

Las siguientes instrucciones configuran el inicio de sesión sin contraseña para cualquier máquina Unix, Linux, OSX, o Cygwin.

En este artículo, username@server.dreamhost.com se utiliza como ejemplo de inicio de sesión.

Además, puede utilizar el nombre de llave predeterminado de id_ed25519 o crear un nombre de llave personalizado. Asegúrate de utilizar el nombre de llave que eligiste en el Paso #3 en los pasos restantes.

 

Configurar un usuario shell

Revisa este artículo para obtener instrucciones sobre cómo cambiar el usuario de tu sitio web a un usuario SSH (usuario shell) en tu panel. Esto es necesario para correr los comandos SSH de este artículo.

Crear el directorio .ssh en tu servidor (servidor DreamHost)

Este paso confirma si el directorio .ssh ya existe en tu servidor de DreamHost, lo cual es necesario para copiar la llave de SSH local a tu servidor.

Inicia sesión en tu servidor a través de SSH y corre los siguientes comandos para confirmar que el directorio ~/.ssh existe bajo usuario.

[server]$ cd ~
[server]$ ls -la | grep .ssh
  • Si ves el directorio .ssh en la lista, continúa con el siguiente paso.
  • Si no lo ves, corre el siguiente comando para crear este directorio:
    [server]$ mkdir ~/.ssh

Generar una llave de emparejamiento (computador de hogar)

En tu computador de hogar:

  1. Abre la terminal de SSH.
  2. Genera una llave privada ed25519 usando ssh-keygen con tu nombre de usuario:
    [local]$ ssh-keygen -t ed25519
    Generating a public/private ed25519 key pair.
    Enter the file in which you wish to save they key (i.e., /Users/username/.ssh/id_ed25519):
    

    Nombre de llave personalizado

    Si presionas Enter, la llave se creará con el nombre predeterminado de id_ed25519.

    Puedes nombrarlo como desees, pero si eliges un nombre personalizado, deberás informar a tu cliente de SSH sobre el nuevo nombre de llave en el Paso #6 a continuación. Además, si eliges usar un nombre personalizado, asegúrate de especificar la ruta completa al directorio .ssh de tu usuario. Si no lo haces, la nueva llave de emparejamiento se crea en el directorio en el que estás corriendo el comando. Por ejemplo:

    [local]$ ssh-keygen -t ed25519
    Generating a public/private ed25519 key pair.
    Enter the file in which you wish to save they key (i.e., /Users/username/.ssh/id_ed25519): /Users/username/.ssh/customkey_ed25519
    
  3. Continúa siguiendo las instrucciones que aparecen.
    Enter a passphrase (leave empty for no passphrase).

    No es necesario que introduzcas una contraseña, pero es muy recomendable ya que protege tu llave privada en caso de que se vea comprometida. Si es así, alguien aún podría necesitar tu contraseña para desbloquearla. La excepción a esto es si estás corriendo un proceso automatizado como un trabajo job. En ese caso, debes omitir la contraseña. Desde ssh-copy-id:

    "Generally all keys used for interactive access should have a passphrase. Keys without a passphrase are useful for fully automated processes."
  4. Presiona Enter para continuar.
    Enter same passphrase again:
  5. Presiona Enter para continuar.
    Aparece el siguiente mensaje:
    Your identification has been saved in /Users/username/.ssh/custom_ed25519
    Your public key has been saved in /Users/username/.ssh/custom_ed25519.pub
    The key fingerprint is:
    SHA256:7pNvrznUREXWY2r1otEwUWo40aKfZDFsUVDac3YuzrI
    The key's randomart image is:
    +--[ED25519 256]--+
    |            o+*+=|
    |             X..o|
    |            @.= +|
    |           o #.* |
    |        Q o @oB o|
    |       .   *.C.+ |
    |        ..S.+    |
    |       .o . .o   |
    |        .+..+.   |
    +----[SHA256]-----+
    

Copiar la llave pública a tu servidor de DreamHost (computador de hogar)

  1. Corre el siguiente comando para copiar la llave pública de tu computador local al servidor de DreamHost.
    [local]$ cat ~/.ssh/id_ed25519.pub | ssh username@server.dreamhost.com "cat >> ~/.ssh/authorized_keys"
    
    Este comando responde con lo siguiente:
    The authenticity of host 'server.dreamhost.com can't be established.
    ED25519 key fingerprint is SHA256:dhw3mJELPEz0i5Hzu/9lJR9FiJkK5EtiiPKAw/0zwuU.
    Are you sure you want to continue connecting (yes/no)? yes
    
  2. Confirma la huella digital en el panel en la página Llaves de SSH.
  3. Escribe la palabra yes para continuar.
  4. Ingresa tu usuario y contraseña de ssh cuando se te solicite.

Los comandos anteriores crean un nuevo archivo llamado authorized_keys bajo tu usuario de DreamHost en el directorio ~/.ssh.

Actualizar los permisos de directorio y archivo (Servidor de DreamHost)

Ahora debes actualizar los permisos del el directorio .ssh y el archivo authorized_keys para proteger aún más tus llaves.

Inicia sesión en tu servidor a través de SSH y corre los siguientes comandos:

[server]$ chmod 700 ~/.ssh
[server]$ chmod 600 ~/.ssh/authorized_keys

Agregar tu llave personalizada al cliente de ssh (computador de hogar)

Este paso solo es necesario si le das a tu llave un nombre personalizado en el paso #3.1 anterior. Luego debes informarle a tu cliente SSH cuál es el nuevo nombre usando ssh-agent.

  1. Corre el siguiente comando para iniciar ssh-agent. Asegúrate de utilizar el carácter de comilla invertida ` y no una comilla simple; este carácter de comilla invertida suele estar en la parte superior izquierda de tu teclado, en la tecla tilde ~ :
    [local]$ eval `ssh-agent`
    
  2. Corre el siguiente comando para agregar tu llave personalizada.
    [local]$ ssh-add ~/.ssh/customkey_ed25519
    Identity added: /Users/username/.ssh/customkey_ed25519            
  3. Confirma que se agregó corriendo lo siguiente. Responderá con la huella digital de tu llave privada.
    [local]$ ssh-add -l
    256 SHA256:7pNvrznUREXWY2r1otEwUWo40aKfZDFsUVDac3YuzrI (ED25519)
  4. Confirma que se agregó corriendo lo siguiente. Responderá con la huella digital de tu llave privada.
    [local]$ ssh-keygen -l -f ~/.ssh/customkey_ed25519.pub
    256 SHA256:7pNvrznUREXWY2r1otEwUWo40aKfZDFsUVDac3YuzrI (ED25519)

Confirmar la conexión de SSH (Servidor de DreamHost)

Si todo está configurado correctamente, ahora deberías poder acceder a tu cuenta de DreamHost a través de SSH sin contraseña. Intenta iniciar sesión nuevamente.

[server]$ ssh username@server.dreamhost.com

Ahora deberías poder iniciar sesión sin usar una contraseña.

Especificar una llave de emparejamiento para que SSH las utilice

De forma predeterminada, tu cliente utilizará la identidad (llave privada) denominada id_ed25519. Sin embargo, si ha creado más de una llave, puedes especificar cuál utilizar al conectarse mediante el indicador -i. Por ejemplo:

[server]$ ssh -i ~/.ssh/customkey_ed25519 username@server.dreamhost.com

Ver también

¿Este artículo ha respondido sus preguntas?

Última actualización el PST.

¿Aún no encuentra lo que busca?