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. El uso de claves SSH es más seguro y conveniente que la autenticación de contraseña tradicional.
En este tutorial, describiremos cómo generar claves SSH en sistemas Debian 10. También le mostraremos cómo configurar la autenticación basada en claves SSH y conectarse a sus servidores Linux remotos sin ingresar una contraseña.
Creando claves SSH en Debian
Antes de generar un nuevo par de claves SSH, verifique las claves SSH existentes en su computadora cliente Debian. Puede hacer esto ejecutando el siguiente comando ls:
ls -l ~/.ssh/id_*.pub
Si la salida del comando anterior contiene algo como No such file or directory
o no matches found
significa que no tiene claves SSH y puede continuar con el siguiente paso y generar un nuevo par de claves SSH.
Si hay claves existentes, puede usarlas y omitir el siguiente paso o hacer una copia de seguridad de las claves antiguas y generar otras nuevas.
Comience generando un nuevo par de claves SSH de 4096 bits con su dirección de correo electrónico como comentario usando el siguiente comando:
ssh-keygen -t rsa -b 4096 -C "[email protected]"
La salida se verá así:
Enter file in which to save the key (/home/yourusername/.ssh/id_rsa):
Presione Enter
para aceptar la ruta y el nombre de archivo predeterminados.
A continuación, se le pedirá que escriba una frase de contraseña segura. Si desea utilizar la frase de contraseña, depende de usted. Con la frase de contraseña, se agrega una capa adicional de seguridad a la clave.
Enter passphrase (empty for no passphrase):
Si no desea utilizar la frase de contraseña, presione Enter
Para verificar que se haya generado el par de claves SSH, escriba:
ls ~/.ssh/id_*
La salida debería verse así:
/home/yourusername/.ssh/id_rsa /home/yourusername/.ssh/id_rsa.pub
Copie la clave pública al servidor
Ahora que tiene su par de claves SSH, el siguiente paso es copiar la clave pública al servidor que desea administrar.
La forma más fácil y recomendada de copiar la clave pública al servidor remoto es utilizar la herramienta ssh-copy-id
En el terminal de la máquina local, sintonice el siguiente comando:
ssh-copy-id remote_username@server_ip_address
Se le pedirá que ingrese la contraseña de su nombre de usuario:
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 ~/.ssh/authorized_keys
la conexión.
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 la ssh-copy-id
no está disponible en la 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"
Inicie sesión en el servidor utilizando claves SSH
En este punto, debería poder iniciar sesión en el servidor remoto sin que se le solicite una contraseña.
Para probarlo, intente conectarse al servidor a través de SSH:
ssh remote_username@server_ip_address
Si no ha establecido una frase de contraseña, inicie sesión de inmediato. De lo contrario, se le pedirá que ingrese la frase de contraseña.
Deshabilitar la autenticación de contraseña
Para agregar una capa adicional de seguridad al servidor, puede deshabilitar la autenticación de contraseña con SSH.
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 el usuario con el que inicia sesión tiene privilegios sudo.
Inicie sesión en su servidor remoto:
ssh sudo_user@server_ip_address
Abra el archivo de configuración SSH /etc/ssh/sshd_config
:
sudo nano /etc/ssh/sshd_config
Busque las siguientes directivas y modifíquelas de la siguiente manera:
PasswordAuthentication no
ChallengeResponseAuthentication no
UsePAM no
Guarde y cierre el archivo presionando CTRL + X, seguido de Y para guardar los cambios y luego ENTER si está usando nano.
Reinicie el servicio SSH con el siguiente comando:
sudo systemctl restart ssh
En este punto, la autenticación basada en contraseña está deshabilitada.
Conclusión
En este tutorial, aprendió cómo generar un nuevo par de claves SSH y cómo configurar la autenticación basada en claves SSH. Puede agregar la misma clave a varios servidores remotos.
También le mostramos cómo deshabilitar la autenticación de contraseña SSH y agregar una capa adicional de seguridad a su servidor.
De forma predeterminada, SSH escucha en el puerto 22. Cambiar el puerto SSH predeterminado reducirá el riesgo de ataques automatizados.
Si se conecta regularmente a varios sistemas, puede simplificar su flujo de trabajo definiendo todas las conexiones en el archivo de configuración SSH.