Secure Shell (SSH) es un protocolo de red para crear una conexión segura entre un cliente y un servidor. Con SSH, puede ejecutar comandos en máquinas remotas, crear túneles, reenviar puertos y más.
SSH admite varios mecanismos de autenticación. Los dos más comunes son la autenticación basada en contraseña y clave pública.
La autenticación mediante una clave pública se basa en el uso de firmas digitales y es más segura y conveniente que la autenticación de contraseña tradicional.
Este artículo explica cómo generar claves SSH en sistemas Ubuntu 20.04. También le mostraremos cómo configurar una autenticación basada en clave SSH y conectarse a servidores Linux remotos sin ingresar una contraseña.
Creación de claves SSH en Ubuntu #
Lo más probable es que ya tenga un par de claves SSH en su máquina cliente Ubuntu. Si genera un nuevo par de claves, el antiguo se sobrescribirá. Para comprobar si existen los archivos clave, ejecute el siguiente ls
comando:
ls -l ~/.ssh/id_*.pub
Si el comando devuelve algo como No such file or directory
, o no matches found
, significa que el usuario no tiene claves SSH, y puede continuar con el siguiente paso y generar un par de claves SSH. De lo contrario, si tiene un par de claves SSH, puede usar las existentes o hacer una copia de seguridad de las claves antiguas y generar un nuevo par.
Para generar un nuevo par de claves SSH de 4096 bits con su dirección de correo electrónico como comentario, ejecute:
ssh-keygen -t rsa -b 4096 -C "[email protected]"
Se le pedirá que especifique el nombre del archivo:
Enter file in which to save the key (/home/yourusername/.ssh/id_rsa):
La ubicación y el nombre de archivo predeterminados deberían estar bien para la mayoría de los usuarios. Presiona Enter
para aceptar y continuar.
A continuación, se le pedirá que escriba una frase de contraseña segura. Una frase de contraseña agrega una capa adicional de seguridad. Si establece una frase de contraseña, se le pedirá que la ingrese cada vez que use la clave para iniciar sesión en la máquina remota.
Si no desea establecer una frase de contraseña, presione Enter
.
Enter passphrase (empty for no passphrase):
Toda la interacción se ve así:
Para verificar que se genere su nuevo par de claves SSH, escriba:
ls ~/.ssh/id_*
/home/yourusername/.ssh/id_rsa /home/yourusername/.ssh/id_rsa.pub
Eso es todo. Ha generado con éxito un par de claves SSH en su máquina cliente Ubuntu.
Copiar la clave pública al servidor remoto #
Ahora que tiene un par de claves SSH, el siguiente paso es copiar la clave pública al servidor remoto que desea administrar.
La forma más fácil y recomendada de copiar la clave pública en el servidor es usar ssh-copy-id
herramienta. En su máquina local, escriba:
ssh-copy-id remote_username@server_ip_address
Se le pedirá que ingrese la contraseña de usuario remoto:
remote_username@server_ip_address's password:
Una vez que el usuario está autenticado, la clave pública ~/.ssh/id_rsa.pub
se agregará al usuario remoto ~/.ssh/authorized_keys
y la conexión se cerrará.
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'username@server_ip_address'"
and check to make sure that only the key(s) you wanted were added.
Si por alguna razón el ssh-copy-id
la utilidad no está disponible en su computadora local, use el siguiente comando para copiar la clave pública:
cat ~/.ssh/id_rsa.pub | ssh remote_username@server_ip_address "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
Inicie sesión en su servidor usando las claves SSH #
Después de completar los pasos anteriores, debería poder iniciar sesión en el servidor remoto sin que se le solicite una contraseña.
Para probarlo, intente iniciar sesión en su servidor a través de SSH:
ssh remote_username@server_ip_address
Si no ha establecido una frase de contraseña para la clave privada, iniciará sesión de inmediato. De lo contrario, se le pedirá que ingrese la frase de contraseña.
Deshabilitar autenticación de contraseña SSH #
Deshabilitar la autenticación de contraseña agrega una capa adicional de seguridad a su servidor.
Antes de deshabilitar la autenticación de contraseña SSH, asegúrese de que puede iniciar sesión en su servidor sin una contraseña y que el usuario con el que está iniciando sesión tiene privilegios de sudo.
Inicie sesión en su servidor remoto:
ssh sudo_user@server_ip_address
Abra el archivo de configuración de SSH con su editor de texto:
sudo nano /etc/ssh/sshd_config
Busque las siguientes directivas y modifíquelas como sigue:
/etc/ssh/sshd_configPasswordAuthentication no
ChallengeResponseAuthentication no
UsePAM no
Una vez hecho esto, guarde el archivo y reinicie el servicio SSH escribiendo:
sudo systemctl restart ssh
En este punto, la autenticación basada en contraseña está deshabilitada.