Introducción
Secure Shell (SSH) es un protocolo de red criptográfico que se utiliza para una conexión segura entre un cliente y un servidor y admite varios mecanismos de autenticación. Los dos mecanismos más populares son la autenticación basada en contraseña y la autenticación basada en clave pública.
En este tutorial, veremos cómo configurar la autenticación basada en claves SSH y cómo conectarse a su servidor Linux sin ingresar una contraseña.
Configurar inicio de sesión SSH sin contraseña
Para configurar un inicio de sesión SSH sin contraseña en Linux, todo lo que necesita hacer es generar una clave de autenticación pública y agregarla al ~/.ssh/authorized_keys
Los siguientes pasos describen el proceso de configuración de inicio de sesión SSH sin contraseña.
Antes de generar un nuevo par de claves SSH, verifique si ya existe una clave SSH en la computadora cliente para evitar sobrescribir las claves existentes.
Ejecute el siguiente comando ls para ver si hay claves SSH existentes:
ls -al ~/.ssh/id_*.pub
Si hay claves existentes, puede usarlas y omitir el siguiente paso o hacer una copia de seguridad de las claves antiguas y generar una nueva.
Si recibe uno de los siguientes mensajes de salida, significa que no tiene una clave SSH y puede continuar con el siguiente paso y generar una nueva.
No such file or directory
no matches found
El siguiente comando generará un nuevo par de claves SSH de 4096 bits con su dirección de correo electrónico como comentario:
ssh-keygen -t rsa -b 4096 -C "[email protected]"
Presione Enter
para aceptar la ruta y el nombre de archivo predeterminados:
Enter file in which to save the key (/home/tuo_username/.ssh/id_rsa):
A continuación, la ssh-keygen
le pedirá que escriba una frase de contraseña segura. Si desea usar la frase de contraseña depende de usted, si elige usar la frase de contraseña, obtendrá una capa adicional de seguridad. En la mayoría de los casos, los desarrolladores y administradores de sistemas usan SSH sin una frase de contraseña porque son útiles para procesos completamente automatizados. Si no desea utilizar la frase de contraseña, presione Enter
.
Enter passphrase (empty for no passphrase):
Para asegurarse de que se generen las claves SSH, puede enumerar sus nuevas claves públicas y privadas con el siguiente comando:
ls ~/.ssh/id_*
Debería recibir un mensaje de salida similar al siguiente
/home/yourusername/.ssh/id_rsa /home/tuo_username/.ssh/id_rsa.pub
Ahora que ha generado un par de claves SSH, para poder acceder a su servidor sin contraseña, debe copiar la clave pública al servidor que desea administrar.
La forma más fácil de copiar la clave pública al servidor es usar un comando llamado ssh-copy-id
. En la terminal de la computadora local, escriba:
ssh-copy-id remote_username@server_ip_address
Se le pedirá que ingrese la contraseña de remote_username
remote_username@server_ip_address's password:
Una vez que el usuario esté autenticado, la clave pública se agregará al authorized_keys
y se cerrará la conexión.
Si por alguna razón la ssh-copy-id
no está disponible en su computadora local, puede usar 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"
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 todo salió bien, iniciará sesión inmediatamente.
Deshabilitar la autenticación de contraseña SSH
Para agregar una capa adicional de seguridad al servidor, puede deshabilitar la autenticación de contraseña para SSH.
Antes de deshabilitar la autenticación de contraseña SSH, asegúrese de que puede iniciar sesión en el servidor sin una contraseña y el usuario con el que inicia sesión tiene privilegios sudo.
Inicie sesión en su servidor remoto con claves SSH, ya sea como usuario con privilegios de root o sudo:
ssh sudo_user@server_ip_address
Abra el archivo de configuración SSH /etc/ssh/sshd_config
, busque las siguientes directivas y edítelas de la siguiente manera:
PasswordAuthentication no
ChallengeResponseAuthentication no
UsePAM no
Cuando termine, guarde el archivo y reinicie el servicio SSH.
En servidores Ubuntu o Debian, ejecute el siguiente comando:
sudo systemctl restart ssh
En servidores CentOS o Fedora, ejecute el siguiente comando:
sudo systemctl restart sshd
Conclusión
En este tutorial, aprendió cómo configurar la autenticación basada en claves SSH, que le permite iniciar sesión en su servidor remoto sin proporcionar una contraseña de usuario. Puede agregar la misma clave a varios servicios remotos.
También vimos cómo deshabilitar la autenticación de contraseña SSH y agregar una capa adicional de seguridad a su servidor.