Universo Ssh II
Después de la primera entrega donde ya vimos lo básico sobre la parte cliente de Ssh y alguna que otra utilidad. Ahora toca ver algunas utilidades mas que se apoyan en este protocolo.
Magic Wormhole
Ya hablamos de la generación de llaves para conexión sin contraseña en el post anterior. Uno de los fallos garrafales, desde mi punto de vista, es la utilización de scp o ssh-copy-id para transferir la llave al servidor remoto desde la parte cliente. Pues durante el proceso solicita la contraseña de usuario y el objetivo es no utilizarla. Bueno para esta tarea tenemos a nuestro amigo Magic-Wormhole el cual tiene implementado una opción para realizar esta acción sin necesidad de contraseña. Si no lo tienes ya instalado puedes consultar el post Utilidades terminal I donde se explica el procedimiento y uso básico.
La parte del servidor por seguridad tiene que invitar al cliente. Esta operación se realiza desde el terminal del servidor logeado con el usuario que tiene que conectarse, lo habitual es que el administrador ( root ) invite al usuario, con el siguiente comando:
wormhole ssh invite
Esto devolverá una respuesta similar a la siguiente:
wormhole ssh accept <Codigo-aleatorio>
La respuesta que da la invitacion es la que se tiene que teclar quien la acepta.
Aquí se puede ver el proceso en el servidor ssh que envia la invitación:
En la parte cliente se tendrá que aceptar la invitación tecleando lo indicado en la respuesta del servidor:
wormhole ssh accept <Codigo-aleatorio>
Aquí se puede ver el proceso en el cliente que acepta la invitación:
Nota Si el cliente dispone de varias llaves solicitara cual enviar.
Sshuttle
Shtutle es un cliente Ssh desarrollado en Python emula un proxy en modo transparente funcionando como una VPN, no es una VPN como tal. Crea automáticamente reglas utilizando pfctl en MacOs o iptables en Linux para el reenvío de puertos sobre una conexión tunelizada via Ssh. Lo mejor es que esta utilidad abstrae al usuario el tener que realizar manualmente cada reenvío hacia la red remota a la cual queremos acceder.
Realmente a nivel de funcionalidad es como si utilizáramos una VPN, pero todo el trafico se enviá por una única conexión Ssh a través del host remoto el cual realiza la función de puente con múltiples túneles de reenvío. Su principal desarrollador Brian May la define como “ la VPN para el hombre pobre”.
Instalación
MacOs
brew install sshttule
Tambien esta disponible en la mayoria de distribuciones Linux y Windows ( con cygwin instalado)
*Nota: En el caso de Windows se complica el uso de esta herramienta. Se propone instalar una máquina virtual Linux en modo puente que haga la conexión con sshuttle y desde la máquina anfitrión Windows enrutar todo el tráfico hacia la máquina Linux.
Uso
Desde el terminal:
sshutle -v --dns -r usuario@ip 0/0
De este modo enviamos todo el trafico por el túnel creado por Shuttle.
-v modo verbose
-- dns tunelizado de tráfico DNS.
Sshpass
Sshpass, es una utilidad diseñada para ejecutar ssh usando de modo no interactivo, utiliza el acceso a la TTY para simular que la contraseña es escrita por un usuario final. Por mi parte solo la aconsejo utilizar en caso que necesitamos pasar la contraseña en el código de programación. Cosa que no es nada segura. Su gran desventaja es la visualización de la contraseña en texto plano, por este motivo no lo veo un método seguro.
Por este motivo no voy a explicar su uso, pero si es necesario mencionarlo dado que puede que en alguna circunstancia sea necesario. De ser así, aconsejo utilizar Gpg o Charm.