Para un ejemplo, supongamos que tengo una granja de 20 servidores de nombre “apolo01 al apolo20” y necesito conectarme vía SSH desde la cuenta “nagios” del servidor “monitor00” a la granja de servidores “apoloxx”, los pasos serían los siguientes :
1.- En el servidor “monitor00” generamos el par de claves de autenticación SSH para el usuario “nagios” utilizando la herramienta ssh-keygen. SSH implementa la autenticación con clave pública utilizando RSA o DSA. La versión 1 del protocolo SSH sólo soporta RSA, mientras que la versión 2 soporta ambos sistemas.
1 |
[nagios] # ssh-keygen -t rsa (le damos ENTER a todas las preguntas que nos realiza) |
Con esta instrucción, creara las respectivas claves, dentro del directorio “.ssh”. Revisar que los permisos, para que funcione la raíz de la cuenta “nagios” debe tener permisos 755 .
1 |
drwxr-xr-x 15 nagios nagios 269 Jan 20 19:09 nagios |
La carpeta “.ssh” debe tener permisos 700.
1 |
drwx------ 2 nagios nagios 57 Jan 20 19:24 .ssh |
Las claves dentro de la carpeta “.ssh” deben tener permisos 600.
1 2 |
-rw------- 1 nagios nagios 572 Jan 20 19:09 id_rsa.pub -rw------- 1 nagios nagios 2602 Jan 20 19:09 id_rsa |
Si el archivo .ssh/authorized_keys no existe, crearlo con los permisos adecuados (644), de lo contrario la autenticación con clave pública no funcionará correctamente:
1 2 |
[nagios]$ touch .ssh/authorized_keys [nagios]$ chmod 644 .ssh/authorized_keys |
El archivo “.ssh/authorized_keys”, lista las claves públicas con las cuales se permite el acceso. Cuando un usuario se loguea, el cliente SSH le indica al servidor qué par de claves desea utilizar para la autenticación. El cliente prueba que tiene acceso a la clave privada y el servidor verifica que la correspondiente clave pública está autorizada para la cuenta especificada.
2.- Aquí ya suponemos que la cuenta “nagios” ya fue creada y existe en toda la granja “apoloxx”.
Nos conectamos al servidor “apolo01” con la cuenta nagios y procedemos a crear si no existe la carpeta “.ssh” con su respectivo permiso 700. Dentro de est carpeta creamos el archivo “authorized_keys” con sus respectivos permisos indicados anteriormente (644).
Estoy simplificando pasos y ahora solo falta copiar el contenido del archivo “id_rsa.pub” del servidor “monitor00”, cuando creamos el par de claves (se ve más o menos así):
1 2 3 |
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDKnJDahBFyVdL5y3Eey0ZPo/rUdEQkB9jlBwFRraRuz5m BWxHknPsh/Yu0c4IvgBjRQHLoiAGAXvXYCtuyCbllqkQVPBdWtpBtMYe2AyobDbHGu0tbNuAu/B2Th/c7nR l+qcmMT5vRoOv7fpMupNkJLGBnW3RdDjgaWgznEHyBM8= nagios@monitor00 |
3.- La clave anteriormente indicada, la copiamos en el archivo “authorized_key” del servidor “apolo01”.
Con esto ya estamos listos y podemos conectarnos directamente al servidor “apolo01” sin necesidad de ingresar la password de la cuenta.
1 |
[nagios@monitor00] # ssh apolo01 |
Importante a tener en cuenta, son los permisos con que se crean las cuentas de usuario por defecto (Directorio HOME).
LINUX por defecto crean las nuevas cuentas de usuario con permisos 775.
AIX – Sun Solaris – FreeBSD Los crea por defecto con permisos 700.
Para que funcione la relación de confianza se debe cambiar los permisos a la carpeta HOME.
chmod 755 HOME
Por lo general, este es el punto que más da errores y que no todos los que trabajamos en esto, lo sabemos.
Después teniendo el primer servidor de la granja funcionando. Es tan fácil como copia, conservando los permisos, al resto de los 19 servidores de la granja.
(nagios@apolo01] $ scp -rp .ssh apolo02:/nagios
Lo mismo para otros servidores, si ya existe la carpeta .ssh, basta con agregar la clave al final del archivo “authorized_key” y debería funcionar.
Para que la relación de confianza funcione (por ejemplo, al usar SSH o SCP sin requerir una contraseña), el servidor debe tener acceso adecuado a los archivos de claves públicas y privadas. Si los permisos son demasiado permisivos (por ejemplo, **777**), el sistema puede considerar que no es seguro y, como resultado, requerir una contraseña.
Excelente. Tenia el mismo problema. Cambie permisos al HOME de mi server remoto y funciono… Gracias