Cuando eres SysAdmin o DevOP y controlas muchos servidores, tener contraseñas es muy engorroso, afortunadamente servicios como el SecureShell permiten tener confianza en sus clientes mediante cifrado tipo RSA .
Esto transfiere la seguridad a la maquina del cliente, donde el que hace esta configuración debe confiar plenamente en su terminal de trabajo pues de otro modo si alguien puede usar su terminal podría entrar a los servidores sin mayor problema.
¿ Para que puedes querer entrar a servicios o servidores sin contraseña ?
Para evitar lo engorro de escribirlo si eres una persona o si ejecutas un programa o un script de mantenimiento poder ejecutar acciones como determinado usuario sin requerir introducir las contraseñas lo cual también es inseguro, pues hardcordear la contraseña en el script lo hace notablemente mas inseguro, pues quien lea el script también lee la contraseña
Entorno.
Para este articulo , queremos ingresar como root a un equipo con GNU/Linux corriendo OpenSSH con la IP 10.10.10.1
Requerimos generar llaves RSA y la clave del usuario root del equipo al que se va a conectar.
Comandos que son ejecutados desde la maquina cliente.
ssh-keygen -b 4096 -t rsa
ssh-copy-id root@10.10.10.1
ssh root@10.10.10.1
con esos 3 comandos hemos configurado el cliente y preparado al equipo remoto para permitir la conexión sin contraseñas, todos los comandos se hacen en el cliente, en el equipo remoto no requerimos hacer nada, aunque los cambios seran guardados en el direcotorio .ssh del home del usuario en este caso root.
Explicacion y uso.
La linea ssh-keygen genera las llaves, solo debe ejecutarse una sola vez aun si queremos conectar a mas de una maquina remota
la linea ssh-copy-id debe ejecutarse una vez por cada maquina que queremos entrar sin clave, en este ejemplo la ip es 10.10.10.1 pero si se quiere un segundo equipo remoto seria 10.10.10.2 y asi sucesivamente
la linea ssh es la linea clásica de conexión, excepto que después del ssh-copy-id a no pedirá nunca mas la clave a menos que la clave se borre o se corrompa en el cliente o en el equipo remoto
Remover las llaves en la maquina remota para que vuelva a pedir claves
En el home del usuario hay un directorio, normalmente .ssh , adentro hay un archivo llamado authorized_keys. Este archivo contiene bloques de llaves empezando con ssh-rsa y terminando con el usuario y host como el siguiente. test@dragonhost.lastdragon.net
ejemplo de bloque
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCrVUtiAFqZtY7NWB8YY9TbyLVA1zZhMbKQY56mp/obLAEFcBsCfV/PEShUEJCpg9aNh4vNr8JAipIQFjuaWRUcWff6t/BNH7SOb2Xf1Elx30rTB7EiVLr4Io+VBobeLyQgz0+z71ZRBzI5Zwvd7oVW3UGu3xRdKLDb41YPI6sRc6sqqG2Nu6oUbUQ6xVAU6ASfz8z8hHk08D5lzkhDerbn1Qq8bJT66ujXB8+fg5Io4KqL4HSDS0mC7rwmSswj2hpaLiO5KqkqI0+A9xgr90G9vskDAQHI/fP7S9SKClH5ZhzMa6QGtxOoTuMVxpLP3U80uLrEm5HL+xqyYB0AsyMBL7/qQMeIQTWpzFufDZjB6QkxRZg5DGeMNvrKDG1UYxQ== test@dragonhost.lastdragon.net
Remover el bloque con el editor de texto favorito, yo uso vim pues esta disponible en cualquier tipo de unix.
Video demostrativo
Hola Último Dragón,
Quiero ser Hacker (en el buen sentido de la palabra) como usted, quisiera saber si das cursos personalizados?
Desde ya muchas gracias,
No doy cursos de hackers, por que ser hackers no es un grado es un estilo de vida y no quiero estafar a la gente como otros lo hacen
Yo uso sshpass en mis scripts y problema resuelto.
Se acopla miy bien con sftp y rsync.
Saludos