Un buen administrador de servidores utiliza varias contraseñas seguras que son difíciles de memorizar; sin embargo, es difícil e inconveniente ingresar cada uno cada vez que accede a servidores remotos. Para superar este problema, en este tutorial, hablaremos sobre sin contraseña ¡SSH y cómo puedes configurarlo en Linux!
What is Passwordless SSH?
SSH sin contraseña le permite exportar un cliente SSH clave pública al servidor remoto para que el cliente pueda iniciar sesión sin necesidad de una contraseña. La forma de lograr esto es mediante el uso de un par de claves asimétricas.
El procedimiento de autenticación funciona de la siguiente manera:
Cuando el cliente intenta acceder al servidor SSH, el servidor primero verifica si la clave pública del cliente está autorizada. Si está autorizado, el proceso de autenticación continúa. Si no está autorizado, el proceso finaliza y no puede acceder al servidor.
Si el servidor autoriza la clave pública del cliente, el servidor cifra un mensaje con la clave pública del cliente. Una vez que el servidor ha cifrado el mensaje, lo envía al cliente.
El cliente recibe el mensaje del servidor. Una vez que se recibe el mensaje, el cliente intenta descifrar este mensaje con la clave privada. Si el cliente descifra el mensaje utilizando la clave privada, el servidor lo detectará y se establecerá la conexión con el servidor SSH.
Si el cliente no puede descifrar el mensaje enviado por el servidor, se cancela el proceso de conexión con el servidor.

Why use SSH Passwordless login
SSH sin contraseña ofrece varios beneficios sobre los métodos tradicionales de inicio de sesión basados en contraseña. Algunos de los beneficios más importantes que hacen que valga la pena usar SSH sin contraseña son:
Inicio de sesión cómodo y seguro
El hecho de que no tendrá que recordar ni ingresar contraseñas para conectarse a un servidor SSH hace que el proceso de autenticación sea conveniente. Además, se basa en criptografía de clave pública-privada, lo que elimina el riesgo de robo de contraseñas a través de Hombre en el medio así como de otros ataques de phishing.
Automatice las tareas de copia de seguridad
Usando Rsync y otras utilidades, puedes automatizar la tarea de hacer una copia de seguridad semanal del contenido generado en una oficina en los Estados Unidos y guardarlo en una oficina ubicada en China. El proceso sería encriptado a través de SSH y completamente automático porque no tendrás que ingresar ninguna contraseña.
Montar un sistema de archivos remoto
SSH sin contraseña es útil si necesita montar un sistema de archivos remoto con SSHFS. Al acceder al servidor SSHFS sin contraseñas, podemos hacer que el servidor SSHFS se monte solo cuando iniciamos nuestro cliente.
Además, varios servidores git utilizan la autenticación de clave pública SSH. Por lo tanto, el par de claves asimétricas que crea para conectarse a un servidor SSH puede tener otros usos, como autenticarse mientras se conecta a nuestro servidor Git.
Setup SSH Passwordless Login in Linux
#1. Asegúrese de que el servidor y el cliente SSH estén instalados
Lo primero que tienes que hacer es asegurarte de que el sistema que actuará como servidor tenga instalado un servidor SSH. Para ello, tenemos que abrir una terminal y teclear el siguiente comando:
sudo apt-get install openssh-server
Si no se instala ningún paquete nuevo en nuestro sistema operativo, el equipo que hará de servidor ya tiene instalado y funcionando el servidor SSH. Del mismo modo, asegúrese de que el sistema que actuará como cliente tenga los paquetes necesarios para conectarse al servidor SSH. Para hacer esto, abra una terminal y escriba el siguiente comando:
sudo apt-get install openssh-client
Hoy en día, la mayoría de las distribuciones de Linux tienen un cliente y un servidor SSH instalados de forma predeterminada.
#2. Crear los pares de claves asimétricas
Una vez que esté seguro de que el servidor SSH y el cliente tienen los paquetes necesarios, puede generar las claves asimétricas para acceder a nuestro servidor SSH sin ingresar ninguna contraseña.
Para hacer esto, en la computadora que actuará como cliente, debe abrir una terminal y escribir el siguiente comando:
ssh-keygen -b 4096 -t rsa
El significado de cada uno de los parámetros del comando es el siguiente:
ssh-keygen
: es el comando que genera el par de claves.
-b 4096
: estás indicando que la clave asimétrica a generar tiene un tamaño de 4096 bits. Otros tamaños que puedes elegir, por ejemplo, son 1024 o 2048.
-t rsa
: Indica que el algoritmo utilizado para generar el par de claves debe ser RSA. Otros algoritmos que podemos utilizar son DSA, ECDSA, RSA1 y ED25519.
Inmediatamente después de ejecutar el comando, se le preguntará la ubicación donde desea guardar las claves y el nombre que desea darles. Simplemente presione la tecla Intro. De esta forma, las claves que se guardarán en la ubicación estándar, es decir, /inicio/ usuario /.ssh/ y tendrá el nombre estándar que id_rsa.
A continuación, se le preguntará si desea ingresar una contraseña para cifrar la clave privada. Como queremos conectarnos al servidor sin ingresar ninguna contraseña, presione la tecla Enter sin ingresar ninguna contraseña.
Finalmente, se le pide que vuelva a ingresar la contraseña. Como no hemos ingresado ninguna contraseña, presione la tecla Enter nuevamente.

Después de realizar estos pasos, las claves asimétricas se crearán en la ubicación ~/.ssh.
#3. Copie la clave pública SSH en el servidor remoto
Hay dos tipos de Llaves SSH para organizar el acceso sin contraseña a través de SSH: una clave pública no secreta (una clave pública) y una clave secreta (una clave privada), id_rsa es su clave privada, y id_rsa.pub es su clave pública.
Debe copiar la clave pública en el servidor remoto, ya sea usando el comando ssh-copy-id o manualmente.
La sintaxis típica para el comando de copia de clave pública SSH es la siguiente.
ssh-copy-id username@remote.host.name
El siguiente ejemplo puede ser más claro:
ssh-copy-id root@192.168.1.6

Una opción alternativa es iniciar sesión en el servidor remoto y crear un archivo de texto en el directorio ~/.ssh, por ejemplo, ejecutando el siguiente comando.
nano ~/.ssh/authorized_keys
Copie el contenido de su archivo ~ / .ssh / id_rsa.pub en su máquina local en este archivo, guarde el archivo y salga del editor de texto.

#4. Prueba de acceso sin contraseña a través de SSH
Para probar si el SSH sin contraseña simplemente intente acceder al servidor SSH:
$ ssh remote_username@server_ip_address
Si todo salió bien, iniciará sesión inmediatamente sin ninguna contraseña.
Disable SSH Passwordless Login in Linux
Para deshabilitar el inicio de sesión sin contraseña de SSH, abra el archivo de configuración de SSH con su editor de texto preferido. En la mayoría de las distribuciones, el archivo de configuración se encuentra en /etc/ssh/sshd_config.
Localice la línea que dice PermitEmptyContraseñas si y cambio PermitEmptyPasswords sí a PermitEmptyPasswords no.
Guarde los cambios en el archivo de configuración y salga del editor de texto.
Reinicie el SSH para aplicar los cambios:
sudo systemctl restart sshd
Palabras finales
Las contraseñas, por complicadas que sean, son menos seguras, y cuando tienes muchos servidores o tienes que iniciar sesión con frecuencia, el proceso se vuelve ineficiente. La autenticación ssh sin contraseña con claves asimétricas no solo es más conveniente sino también más segura y lo protege contra ataques de phishing.
También puede explorar Cifrado simétrico.