Secure Shell (SSH) es un protocolo de red criptográfico utilizado 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 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 9. También le mostraremos cómo configurar una autenticación basada en clave SSH y conectarse a sus servidores Linux remotos sin ingresar una contraseña.
Creación de claves SSH en Debian #
Antes de generar un nuevo par de claves SSH primero, verifique las claves SSH existentes en su máquina cliente Debian. Puede hacerlo 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]"
El resultado será similar al siguiente:
Enter file in which to save the key (/home/yourusername/.ssh/id_rsa):
Presiona Enter
para aceptar la ubicación y el nombre de archivo predeterminados.
A continuación, se le pedirá que escriba una frase de contraseña segura. Si desea utilizar una frase de contraseña, depende de usted. Con una frase de contraseña, se agrega una capa adicional de seguridad a su clave.
Enter passphrase (empty for no passphrase):
Si no desea utilizar una frase de contraseña, simplemente presione Enter
.
Toda la interacción se ve así:
Para verificar que se generó 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
Copiar 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 en el servidor remoto es usar ssh-copy-id
herramienta.
En la terminal de su máquina local, ejecute el siguiente comando:
ssh-copy-id remote_username@server_ip_address
Se le pedirá que ingrese el remote_username
contraseña:
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
archivo 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 el ssh-copy-id
La utilidad 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"
Inicie sesión en el servidor usando las 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, 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 #
Para agregar una capa adicional de seguridad a su 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 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 /etc/ssh/sshd_config
:
sudo vim /etc/ssh/sshd_config
Busque las siguientes directivas y modifíquelas como sigue:
/etc/ssh/sshd_configPasswordAuthentication no
ChallengeResponseAuthentication no
UsePAM no
Una vez que haya terminado, guarde el archivo y reinicie el servicio SSH con el siguiente comando:
sudo systemctl restart ssh
En este punto, la autenticación basada en contraseña está deshabilitada.