Uso de llaves RSA y SSH con login automático

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 [email protected]
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 [email protected][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 [email protected][IP DEL SERVIDOR]

Por el contrario, si utilizamos un nombre personalizado debemos indicar que llave usar en la validación.

ssh [email protected][IP DEL SERVIDOR] -i /root/.ssh/ssh-to-server1

Ingeniero, enfocado en la familia y el cliente, emprendiendo y capitalizando lo aprendido por años.

Leave Comment

Your email address will not be published. Required fields are marked *

%d bloggers like this: