Aprenda a habilitar la autenticación SSH sin contraseña en Linux y macOS.

Imagen: Getty Images / iStockphoto
Probablemente asegure el shell en sus servidores Linux durante todo el día. Con suerte, ha configurado esos servidores de manera que esté utilizando la autenticación de clave SSH. ¿Por qué? Porque esa es la forma más segura de utilizar inicios de sesión SSH en los servidores de su centro de datos remoto.
De lo contrario, quiero guiarlo a través del proceso de configuración de la autenticación de clave SSH, con la adición de hacerlo de manera que no tenga que ingresar una contraseña cuando inicie sesión.
VER: Política de mejores prácticas de certificados SSL (TechRepublic Premium)
Lo que necesitarás
Este proceso se puede realizar con casi cualquier cliente que admita SSH. Lo probé con éxito tanto en Linux como en macOS. En el extremo remoto, haré una demostración con Ubuntu Server 20.04.
Cómo crear su par de claves SSH
Lo primero que debe hacer es generar su par de claves SSH. Este paso se realiza por parte del cliente. El proceso es exactamente el mismo en Linux que en macOS.
Inicie sesión en su cliente de escritorio, abra una ventana de terminal y emita el comando:
ssh-keygen -t rsa -b 4096
Estamos generando una clave fuerte, con la adición de la opción -b 4096.
Asegúrese de darle a su par de claves una frase de contraseña muy segura. Debido a la naturaleza de lo que estamos haciendo, desea una contraseña / frase que sea imposible de adivinar, así que vaya a lo grande.
También puede considerar ubicar este par de llaves en una ubicación no estándar. Para ello, siempre puedes crear un directorio oculto con un nombre que no tenga nada que ver con SSH o seguridad. Ofusque ese par de claves a plena vista. Por ejemplo, puede crear un directorio oculto con el comando:
mkdir ~/.purple
Durante la fase de nomenclatura de la creación de la clave, ingresarías algo como:
/home/USER/.purple/custom_key
Donde USUARIO es su nombre de usuario.
O, en macOS:
/Users/USER/.purple/custom_key
Donde USUARIO es su nombre de usuario.
Una vez que se genera su clave, puede copiarla en el servidor con el comando:
ssh-copy-id SERVER
Donde SERVER es la dirección IP o el dominio del servidor remoto.
Si opta por utilizar una clave personalizada, ese comando se vería así:
ssh-copy-id -i ~/.purple/custom_key SERVER
Donde SERVER es la dirección IP o el dominio del servidor remoto.
Nota: Si usa una clave SSH personalizada, el proceso de iniciar sesión en el servidor remoto es un poco diferente. En lugar de ssh USER @ SERVER (donde USER es el nombre de usuario y SERVER es la dirección IP o dominio del servidor remoto), el comando sería (siguiendo nuestro ejemplo):
ssh -i ~/.purple/custom_key USER@SERVER
Donde USUARIO es el nombre de usuario y SERVIDOR es la dirección IP o el dominio del servidor remoto.
Cómo hacer el inicio de sesión sin contraseña
Quiero comenzar diciendo que debes asegurarte de dos cosas:
- La contraseña de inicio de sesión de su cliente de escritorio es segura. No desea que las personas tengan acceso fácil a un cliente de escritorio que tenga una configuración de autenticación de clave SSH sin contraseña.
- Cada vez que abandona su cliente de escritorio, lo bloquea o cierra la sesión. No te vayas con tu escritorio desbloqueado, de lo contrario, cualquiera podría abrir una terminal y SSH a tu servidor.
Considere esos dos elementos clave para el éxito de su seguridad de cliente a servidor.
Hay dos formas de hacer que esto funcione. El primer método se puede realizar en su cliente de escritorio Linux, mientras que el segundo método funciona tanto en Linux como en macOS.
Déjame mostrarte cómo cuidar la primera opción. Una vez que haya copiado su clave SSH en el servidor, querrá SSH en ese servidor por primera vez. Cuando lo haga, aparecerá una ventana emergente pidiéndole que escriba su contraseña SSH (Figura A).
Figura A

Iniciar sesión en un servidor Linux remoto, a través de SSH, utilizando autenticación de clave.
Observe la casilla de verificación Desbloquear automáticamente esta tecla cada vez que inicie sesión. Marque esa casilla, escriba su contraseña y haga clic en Desbloquear. Al marcar la casilla Desbloquear automáticamente esta clave cada vez que inicie sesión, no tendrá que molestarse en escribir la frase de contraseña de su clave SSH para proteger el shell en ese servidor remoto. Incluso si cierra sesión o reinicia esa máquina cliente, aún no tendrá que escribir su frase de contraseña para la autenticación de clave SSH en ese servidor Ubuntu.
El segundo método requiere el uso del comando ssh-add, que agrega identidades de clave privada al agente de autenticación de OpenSSH. Entonces, en la terminal de Linux o macOS, emita el comando:
ssh-add .ssh/id_rsa
O, si ha creado una clave personalizada (nos quedaremos con nuestro ejemplo anterior), emitiría un comando como:
ssh-add ~/.purple/custom_key
Ahora, la próxima vez que ingrese SSH a ese servidor remoto desde cualquiera de los clientes, no tendrá que ingresar su contraseña de autenticación de clave SSH.
El problema con el método anterior es que no siempre funciona como una solución permanente para todos los clientes de escritorio de Linux. Si encuentra que ese es el caso, siempre puede instalar el archivo de claves con el comando:
sudo apt-get install keyfile -y
Una vez que la aplicación está instalada, debe agregar un par de líneas en la parte inferior de su archivo .bashrc. Abra ese archivo con el comando:
nano ~/.bashrc
En la parte inferior del archivo, agregue las siguientes dos líneas:
/usr/bin/keychain $HOME/.ssh/id_dsa source $HOME/.keychain/$HOSTNAME-sh
Si usa una clave personalizada, esas dos líneas se verían así (siguiendo nuestro ejemplo):
/usr/bin/keychain $HOME/.purple/custom_key source $HOME/.keychain/$HOSTNAME-sh
Guarde y cierre el archivo. Cierre y vuelva a abrir su terminal y no debería tener que escribir su contraseña de autenticación de clave SSH al iniciar sesión en el servidor Linux remoto. La única vez que tendrá que escribir esa frase de contraseña es cuando abra por primera vez una ventana de terminal después de reiniciar.
La única advertencia para usar este método es que verá la salida del archivo de claves cada vez que abra la ventana de su terminal (Figura B).
Figura B

La salida del archivo de claves se muestra en la ventana del terminal de Linux.
Nuevamente, recuerde que debe usar esta configuración con prudencia. No deje su escritorio desbloqueado y asegúrese de que su contraseña de inicio de sesión sea muy segura.