Secure SHell (SSH) es un intérprete de ordenes remoto. Su principal uso es para la administración de sistemas remotos. Reemplaza al antiguo e inseguro «rlogin» mediante el uso de TLS (lo que añade cifrado de datos y evita el man-in-the-middle attack).
El uso habitual de SSH es:
ssh <usuario-remoto>@<host>
Si conecta con el equipo remoto, sólo nos basta introducir la contraseña y estaremos dentro.
Si sólo queremos ejecutar una orden o un script determinado, añadimos el comando al final. Un ejemplo habitual es reiniciar una máquina.
ssh root@server1.dominio.com reboot
Visto su uso habitual veamos otros ejemplos muy útiles para llevar mejor el día a día del administrador de sistemas.
– Túnel proxy
Si no estamos muy seguros de que nuestra navegación web pase por un canal seguro (sin fisgones), podemos hacer un canal seguro entre nuestro equipo y nuestro servidor de confianza (si no teneis uno, podeis lanzar una micro-instancia de Amazon EC2, tendréis un buen proxy server por $0,02 por hora).
El tunel se establece así:
ssh -D 8080 <user>@<host>
La opción -D 8080, indica que queremos hacer un túnel asociado al puerto local 8080. Sólo nos quedaría configurar nuestro navegador web para usar como proxy SOCKS el equipo «localhost» en el puerto 8080.
– SSH con interfaz gráfica
Si no os sentís cómodos con la línea de comandos, o bien necesitáis correr una aplicación gráfica, SSH tambíen tiene una opción para ayudaros. Sólo necesitais estar ejecutando un servidor X Window (normalmente Xorg Server) en vuestra máquina y redireccionar el tráfico X11 hacia ella.
ssh -Y <user>@<host>
El argumento «-Y» hará todo el trabajo de redirección por nosotros. Sólo nos queda ejecutar nuestra aplicación gráfica (Ej. netbeans).
– Tunel proxy estático
Es una variante del túnel anterior pero con la particularidad de poder especificar el puerto de destino en el host remoto. Se ve mejor con un ejemplo.
Suponed que habéis desarrollado una aplicación servidor que recibe un mensaje y lo redistribuye vía Twitter a una cuenta especificada (vale cualquier otra aplicación imaginable). Esta aplicación escucha los mensajes en el puerto 1234. Como ibais justo de tiempo (algo demasiado habitual) habéis optado por no usar TLS para cifrar la comunicación y utilizar en su lugar un canal SSH.
La solución es sencilla. El cliente tiene que asociar un puerto del equipo local al puerto de aplicación del servidor mediante la siguiente sintaxis.
ssh -L <puerto-local>:<host-server>:1234 <user>:<remote-server>
Hay que especificar que <host-server> no tiene porqué ser igual a <remote-server>. Si tanto el equipo donde corre el servidor SSH como el que corre la aplicación servidor, son el mismo, la sintaxis sería:
ssh -L <puerto-local>:localhost:1234 <user>:<remote-server>
Si no coinciden lo que ocurre es que habría una comunicación no segura entre <remote-server> y <host-server>.
Bueno, estas son algunas de las utilidades más importantes de SSH. Existen otras como «scp» (para copiar archivos) o «sftp» (ssh ftp).
Sólo deciros que si sois usuarios de Windows, podéis usar PuTTY.
Translate to:English
Menéame Twitter