miércoles, 25 de noviembre de 2009

[Linux] ssh sin contraseña

Cuando hay que hacer muchas conexiones ssh a un servidor remoto, para ejecutar comandos o copiar archivos, es una lata tener que introducir la contraseña en cada ocasión. Podemos crear una relación de confianza en el servidor, hacia nuestro usuario desde nuestra máquina.

Llamaremos cliente a la máquina desde la que nos conectamos, y servidor a la que nos queremos conectar. Nuestro usuario también debe existir en el servidor, y si no deberemos usar el formato usuarioqueexiste@servidor en nuestras llamadas ssh. Todas estas operaciones las haremos desde el cliente, y en todas ellas nos pedirá nuestro password. Allá vamos:

Generamos un par de claves (con una sería suficiente, pero nos aseguramos de tenerlas para futuras necesidades), y reunimos sus partes públicas en un único archivo para enviarlas juntas al servidor:
ssh-keygen -t rsa
ssh-keygen -t dsa
cat .ssh/*pub >> claves
Si no existe, debemos crear un directorio .ssh (y lo podemos hacer por ssh):
ssh servidor "mkdir .ssh"
Nos pedirá la contraseña y ejecutará el comando. Después copiamos al servidor las claves que generamos al principio:
scp claves fulanito@servidor:.ssh/
y después volcamos las dos claves públicas al archivo donde realmente se nos otorga la confianza:
ssh servidor "cd .ssh; cat claves >> authorized_keys; rm claves"
Y esta será la última vez que nos habrá pedido la contraseña. Lo comprobamos:
ssh servidor
Et voilà, entramos sin que nos pida nada más.

Datos personales