corkscrew nos permite utilizar los proxys http/s para conectar a servidores SSH, útil en entornos de conectividad limitada (Proxys empresariales / Firewalls). Funciona sin problemas en los siguientes servidores Proxy HTTP.
Servidores HTTP.
NOTA: No todos los proxy http/s y sus configuraciones permiten este tipo de solicitudes. Depende del servidor proxy utilizado, si no se reciben paquetes en un determinado espacio de tiempo la conexión será terminada. Se recomienda hacer uso del comando top por ejemplo para mantener siempre la conexión activa.
corkscrew web: http://www.agroman.net/corkscrew/
Proxy HTTP con autenticación.
Se crea el fichero ~/.ssh/myauth con el usuario y password correspondiente con esta sintaxis.
usuario:password
Se dan los permisos recomendados.
chmod 600 ~/.ssh/myauth
Ejecutando corkscrew desde el cliente SSH. Para el ejemplo conectará al propio servidor Proxy (localhost).
ssh -o ProxyCommand='corkscrew proxyhttps.com 8080 %h %p' root@localhost -p 2222
Es factible editar el fichero ~/.ssh/config y agregar el siguiente contenido.
Host * ProxyCommand /usr/bin/corkscrew proxyhttps.com 8080 %h %p
Si se requiere autenticación solo se debe agregar la ruta del fichero ~/.ssh/myauth.
corkscrew proxyhttps.com 8080 %h %p ~/.ssh/myauth
Se crea el script proxy.sh
#! /bin/bash corkscrew proxyhttps.com 8080 $*
Se fija el valor de la variable para poder funcionar con el servidor proxy mediante git.
export GIT_PROXY_COMMAND=/home/sexyfrau/proxy.sh
Si se quiere tunelizar otro tipo de aplicaciones por el mismo tunel http, se puede hacer uso del servidor de sockets que ofrece ssh. De esta forma podemos utilizar el tunel para casi cualquier aplicación del sistema.
ssh -o ProxyCommand='corkscrew 201.141.36.88 80 %h %p' -N -D 9999 -f root@localhost -p 2222
NOTA: Para no tener la necesidad de configurar el proxy en cada software que se quiere tunelizar, se puede hacer uso de tsocks. También muy útil cuando las aplicaciones no soportan uso de proxys de forma nativa.
La utilidad corkscrew funciona sin problemas con el proxy http/s Tinyproxy, las opciones de configuración que se deben tener en cuenta en Tinyproxy para funcionar junto con corkscrew son las siguientes.
Timeout 600 # Podemos aumentarlo para que no se nos cierren sesiones ssh que tengamos a través del tunel. Allow X.X.X.X # Por defecto localhost, por lo que no estará accesible desde el exterior. Se debe agregar el dominio / IP de los clientes deseados o comentar todos los Allow para que permita todos. ConnectPort 22 # Puertos a los que permitirá conectarse a través de él. Si se comentan todos permitirá cualquier puerto. Si queremos por ejemplo hacer conexiones SSH debemos permitir el 22, si es Jabber 5222, etc.
Solución en cliente: Editar el fichero /etc/ssh/ssh_config.
Host * ServerAliveInterval 120
Indica al cliente de ssh que envíe un paquete cada 120 segundos para mantener activa la comunicación.
También es posible modificar el servidor en vez / a la vez que cliente con la directiva “ClientAliveInterval”.