En linux es posible validar conexiones SSH en forma automática con el uso de llaves RSA, para ello tenemos el siguiente esquema
| CLIENTE | ————– SSH ——->> | SERVIDOR |
EN EL CLIENTE
En el equipo cliente ejecutamos los siguientes comandos:
cd /root/.ssh
ssh-keygen -t rsa
Enter file in which to save the key (/root/.ssh/id_rsa):
En este momento el generador de llaves pide el NOMBRE DE LA LLAVE, por defecto la llave se llama id_rsa, sin embargo cuando se requiere establecer conexiones hacia varios servidores distintos conviene ponerle nombre distintos, yo voy a utilizar el nombre ssh-to-server1
Enter file in which to save the key (/root/.ssh/id_rsa): ssh-to-server1
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in ssh-to-server1.
Your public key has been saved in ssh-to-server1.pub.
The key fingerprint is:
25:b5:70:73:39:d9:32:0e:c1:ca:36:52:4e:0a:4b:7f root@FW-RANCAGUA
The key's randomart image is:
+--[ RSA 2048]----+
| .o.+ .+ |
| o . . o+.+= . |
| . * + ..oo. o |
| o = E o. |
| . + S |
| |
| |
| |
| |
+-----------------+
En este momento en el equipo cliente se han creado dos llaves, la privada ssh-to-server1 y la pública ssh-to-server1.pub
Mediante un protocolo de copia seguro como SCP llevamos la llave pública hacia el servidor y la copiamos
scp ssh-to-server1.pub root@[IP DEL SERVIDOR]:/root/.ssh/
Esto se debe repetir para todos los posibles canales de conexión SSH, es decir que si de un cliente nos conectamos a 3 servidores distintos, hay que generar 3 llaves y luego mover cada llave pública a su respectivo servidor (destinatario).
EN EL SERVIDOR
Estando en el servidor vamos al directorio /root/.ssh/
cd /root/.ssh
En este punto al ejecutar el comando ls podremos visualizar 2 archivos importantes, el ssh-to-server1.pub y el authorized_keys
El archivo authorized_keys contiene la información de las llaves públicas autorizadas para establecer una conexión SSH, por lo tanto debemos integrar la nueva llave a este archivo.
cat ssh-to-server1.pub >> authorized_keys
Finalmente revisamos la configuración del archivo sshd_config , muchas veces por seguridad el login automático del root es prohibido con el parámetro PermitRootLogin No, para que la validación RSA funcione manteniendo esta característica de seguridad debemos reemplazarla por PermitRootLogin without-password , de esta manera el login directo de root será permitido solo mediante llaves, si se intenta usar contraseñas el servidor denegará el acceso. En el caso que el parámetro de seguridad sea PermitRootLogin Yes, no sería necesario modificar nada.
COMO CONECTAR CONTRA EL SERVIDOR
En el equipo cliente si se usó el nombre de llave por defecto id_rsa , la forma de conectar es directa y simple
ssh root@[IP DEL SERVIDOR]
Por el contrario, si utilizamos un nombre personalizado debemos indicar que llave usar en la validación.
ssh root@[IP DEL SERVIDOR] -i /root/.ssh/ssh-to-server1