Login remoto con SSH sin contraseña
El login remoto a través SSH permite conectarse de un servidor a otro para realizar cualquier tarea sobre el servidor remoto. Si utilizamos la configuración por defecto siempre nos pedirá contraseña por lo que si pretendemos crear un script que realice automáticamente alguna tarea deberemos tener un mecanismo de autentificación que no requiera contraseña, en este caso configuraremos una clave SSH que nos permitirá el acceso sin contraseña.
Para la prueba tenemos el servidor de origen con la IP 10.0.2.5 (debian1) con el usuario «pepe» y el servidor destino con la IP 10.0.2.4 (debian2) con el usuario «juan». En principio se puede utilizar cualquier usuario en el origen para conectar con cualquier usuario en destino, a excepción del usuario root que debe estar permitido en la configuración de SSH.
Básicamente son dos pasos, crear el par de claves pública/privada en el servidor de origen y copiar la clave pública al fichero authorized_keys en el servidor destino. El proceso es el siguiente:
En el servidor de origen (10.0.2.5) iniciaremos con el usuario “pepe” y crearemos la clave que nos permitirá acceder al destino :
# ssh-keygen –t rsa
*Pulsaremos a todo enter y no estableceremos una frase de seguridad
El comando genera dos archivos en la carpeta para SSH del usuario (/home/pepe/.ssh)
- Id_rsa: Fichero con la clave privada
- Id_rsa_pub: Fichero con la clave pública
Ahora deberemos copiar el contenido del fichero id_rsa_pub en el servidor de origen al fichero /home/juan/.ssh/authorized_keys del servidor de destino.
También podemos copiar de forma automática la clave pública entre el origen y el destino con el comando ssh-copy-id:
# ssh-copy-id -i id_rsa.pub juan@10.0.2.4
En este punto ya podremos acceder sin contraseña.
En algunos casos las versiones de SSH del origen y destino son diferentes y el acceso no funcionará, es este caso deberemos comprobar que los permisos del directorio .ssh y del fichero authorized_keys en el servidor destino son correctos (/home/juan):
# chmod 700 .ssh
# chmod 640 .ssh/authorized_keys