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 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
