El protocolo ssh además de permitirle conectarse a servidores en modo texto (ver Sección 2.3, “Conexión con ssh”) le permite iniciar aplicaciones gráficas que se ejecuten en el servidor, hacer redireccionamiento de puertos y conectarse sin necesidad de dar clave (dando una clave sólo una vez en su computador).
Es posible ejecutar aplicaciones gráficas en el servidor y ver las ventanas gráficas en otro computador. Para esto es necesario:
Que en el archivo de configuración
/etc/ssh/sshd_config
del servidor esté habilitada la opción:
X11Forwarding yes
Que en el computador donde se desea ver la información esté instalado un servidor de X-Window.
En el caso de sistemas tipo Unix basta con tener X-Window instalado (si ve el modo gráfico es porque ya está instalado). Para otros sistemas operativos puede ser posible encontrar un servidor de X-Window, por ejemplo para Windows, puede emplear Cygwin-X (http://x.cygwin.com) o Xming (http://www.straightrunning.com/XmingNotes/).
Una vez esté ejecutándo el servidor de X-Window en su
computador entre al servidor usando
ssh con opción para hacer reenvío
de X11. De esta manera toda la información gráfica
enviada por el servidor viajará por el canal seguro que
ssh establece cuando se conecta al servidor.
En el caso de OpenSSH esto se indica con la opción
-X
, i.e se debe conectar con:
ssh -X juan@practica.pasosdeJesus.org
En el caso de putty en el dialogo de configuración que aparece antes de iniciar la conexión, en el menú Connection->SSH->X11 marque 'Enable X11 forwarding'.
Una vez haga esto, las aplicaciones gráficas que inicie en la sesión ssh que inició, se verán en su computador. Pruebe por ejemplo con:
xeyes
Puede usar ssh también para crear un túnel
entre un puerto local y un puerto accequible desde el
servidor al cual se conecta. Por ejemplo si en una
organización tienen un cortafuegos conectado a Internet
(digamos que es practica.pasosdeJesus.org) y
en la red interna cuentan con un servidor web SSL
(por ejemplo base
),
podría establecerse un túnel desde un computador fuera
de la organización y el servidor privado,
ingresando al cortafuegos con:
ssh -L10443:base:443 juan@practica.pasosdeJesus.org
donde base
es el nombre del servidor al
interior de la organización y 443 es el número de puerto de
HTTPS (protocolo HTTP sobre SSL, es decir conexiones web
encriptadas).
Si emplea putty debe especificar esta información en el diálogo de configuración Connection->SSH->Tunnels como se presenta a continuación presionando el botón Add para adicionar el túnel a la región `Forwarded ports'.
Una vez inicie la conexión debe digitar la clave
del usuario en el cortafuegos. Con lo cual
quedará establecido un túnel entre el puerto 10443 del
computador local y el puerto 443 del servidor
base
.
Este túnel puede usarse ingresando en un navegador la
dirección:
https://127.0.0.1:10443
Otra forma de realizar un tunel, pero sin limitarlo a un puerto es empleando un servidor SOCKS incluido con el programa ssh y configurando su navegador para emplearlo.
Primero debe establecer la conexión indicando el puerto que usará para el servidor socks con la opción -D, por ejemplo:
ssh -D8080 juan@practica.pasosdeJesus.org
donde 8080
es el número de puerto donde
correrá el servidor SOCKS en su computador.
Si emplea putty debe especificar esta información en el diálogo de configuración -> -> , marcando Dynamic y escribiendo un puerto como 8080 en "Local Port," y proceder a conectarse al servidor.
A continuación debe configurar su navegador para que utilice ese servidor SOCKs en su propio computador en el puerto que específico (8080 en este ejemplo). En el caso de Firefox puede hacerlo desde
-> -> -> -> especificar en servidor Socks 127.0.0.1 y en puerto 8080. Una vez acepte toda navegación que intente realizar se hará por el servidor al cual se conectó. Si por ejemplo ese servidor tiene acceso en una red interna a un servidor con IP 192.168.1.2 puede emplear esa URL en su navegador y llegará a ese computador en la red interna donde está el servidor.Puede aprender sobre ssh examinado la especificación del protocolo en uno de los borradores de la especificación temporal "SSH Protocol Architecture" (http://www.ietf.org/internet-drafts/draft-ietf-secsh-architecture-13.txt).
Hay información sobre la implementación OpenSSH en http://www.openssh.org.