miércoles, 28 de abril de 2010

Conexión automática SSH compartiendo claves

En ocasiones, resulta interesante conectarse por ssh a uno o varios servidores o clientes y siempre con la misma contraseña. Si queremos hacer esto muchas veces puede resultar tedioso tener que introducir una y otra vez la contraseña. Y más aún cuando queremos crear un script para que se ejecute en remoto.


Por eso podemos usar la conexión automática compartiendo claves (pública y privada). Voy a crear un pequeño HowTo usando información que he encontrado en crysol.org.

Me ha surgido a mí el problema porque en el aula de informática hay un ordenador del profesor y varios ordenadores para los alumnos. Lo que quiero hacer es desde el ordenador del profesor lanzar tareas administrativas a los clientes. Por ejemplo, actualizaciones, copias de seguridad, compartir carpetas, etc.


Debemos definir correctamente quién es el servidor y quién es el cliente.
  • El servidor es el ordenador al que nos vamos a conectar (en mi caso es uno de los pcs de los alumnos)
  • El cliente es el ordenador del que nos conectamos (en mi caso es el ordenador del profesor, el que ejecutará remotamente los scripts).
Antes de nada, se supone que tenemos instalado en el servidor y en el cliente el servicio ssh (en ubuntu, apt-get install ssh).

Lo que haremos es en el cliente (ordenador del profesor) crear las claves pública y privada:
madrid@cliente:~$ ssh-keygen -b 4096 -t rsa
Nos pedirá dónde queremos guardar la clave (por defecto es en $HOME/.ssh/id_rsa) y pulsaremos ENTER para admitir esa ruta por defecto.

Luego pide una clave de paso (passphrase), que dejaremos en blanco para no tener que introducir ninguna al hacer después la conexión. Y luego volvemos a aceptar la misma clave vacía. Es decir, se pulsa dos veces ENTER.

Al terminar nos sale un diálogo diciendo que se ha creado todo correctamente.

Ahora tenemos creadas en $HOME/.ssh las dos claves:
madrid@cliente:~/.ssh$ ls -l
total 12
-rw------- 1 madrid madrid 3243 2010-04-28 22:27 id_rsa
-rw-r--r-- 1 madrid madrid  734 2010-04-28 22:27 id_rsa.pub
-rw-r--r-- 1 madrid madrid 1326 2010-04-28 22:27 known_hosts
Ahora debemos copiar la clave pública a los servidores (ordenadores de los alumnos). Para ello simplemente copiamos la clave con la siguiente instrucción:
madrid@cliente$ ssh-copy-id madrid@servidor
Y con esto ya está toda la configuración realizada y ya podemos conectarnos directamente compartiendo claves.



Observaciones:
  • El directorio .ssh en el servidor debe existir y tener los permisos 700 y el fichero authorized_keys debe tener los permisos correctos (0600); sino debemos cambiarlos (chmod 600 $HOME/.ssh/know_hosts).
  • La primera vez que se accede a una máquina se almacena su host_key en el fichero $HOME/.ssh/know_hosts.
Voy a hacer esta configuración en mi aula de informática, y en cuanto lo haga comento si me he encontrado algún problema o se necesita algo en especial.

Después de mis pruebas:

Ya he hecho algunas pruebas y he conseguido configurar sin ningún problema 4 equipos.

Como ya tenía creadas las claves, simplemente he empezado a ejecutar desde un terminal ssh-copy-id madrid@192.168.1.112 y después me he podido conectar sin ningún problema.

De hecho he podido hacer esto simplemente señalando la IP, no hace falta señalar el nombre de máquina. Y es más, al tener el mismo usuario en ambas máquinas, puedo simplemente ejecutar ssh-copy-id 192.168.1.112.

Resumiendo las instrucciones:
  1.  ssh-keygen -b 4096 -t rsa
  2.  ssh-copy-id 192.168.1.112
  3.  ssh-copy-id 192.168.1.113
  4.  ...
  5. y la conexión ya es compartiendo claves desde el cliente (profesor) a los distintos puestos servidores (alumnos)

1 comentario: