martes, junio 27, 2006

Uso de ssh para invocar a un comando de Linux desde Windows

Para invocar un comando con ssh desde Windows a una máquina Linux necesitamos OpenSsh.

OpenSsh viene por defecto en Linux, mientras para Windows lo podemos tener con Cygwin. (http://www.cygwin.com/) La mejor forma de instalarlo es utilizando el programa de setup. (http://pigtail.net/LRP/printsrv/cygwin-ssh.html)

Un par de definiciones básicas:
  • El cliente será el sistema desde el que vamos a lanzar el comando ssh.
  • El servidor será el equipo al que se conectará la sesión ssh.
En nuestro caso el cliente será el equipo con Windows y el servidor el equipo con Linux.

En el servidor tenemos que crear en el HOME del usuario al que nos vamos a conectar un directorio de nombre .ssh y darle los permisos adecuados. Es importante el tema de los permisos, porque si se le dan más permisos de los adecuados no funcionará de forma adecuada, es decir, nos pedirá la password al intentar ejecutar el comando de forma remota.

$ mkdir -p $HOME/.ssh
$ chmod 0700 $HOME/.ssh


En el cliente usamos el comando
ssh-keygen para crear el par de claves DSA privada y pública.
C:\cygwin\bin> ssh-keygen -t dsa

Ese comando crea dos ficheros en el directorio .ssh del usuario.
D:\Documents and Settings\e88815a\.ssh
id_dsa
id_dsa.pub


Después hay que copiar la clave pública al servidor id_dsa.pub.

En el servidor se debe agregar el fichero con la clave pública al fichero de claves autorizadas del usuario, asegurándonos de que mantiene los permisos adecuados.
$ cat id_dsa.pub >> $HOME/.ssh/authorized_keys2
$ chmod 0600 $HOME/.ssh/authorized_keys2

Por último probamos a ejecutar el comando que queríamos lanzar.
C:\cygwin\bin> ssh -i /home/tsad/.ssh/id_dsa tsad@159.23.83.181 /tmp/LanzarGui.sh