User Tools

Site Tools


informatica:linux:xwindow

X11 Forwarding

forward X X11 DISPLAY ssh

Queremos abrir desde un cliente aplicaciones graficas (por ejemplo xeyes) que estan instaladas en el servidor.

Desde cliente GNU/Linux a servidor GNU/Linux

1. (Servidor) Editar:

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
sudo vim /etc/ssh/sshd_config 

Y asegurarnos que la siguiente lineas aparece:

...
X11Forwarding yes
...

2. (Servidor) Reiniciar demonio SSH:

sudo /etc/init.d/ssh restart

3. (Cliente) Editar:

sudo cp /etc/ssh/ssh_config /etc/ssh/ssh_config.bak
sudo vim /etc/ssh/ssh_config 

Y asegurarnos que la siguiente lineas aparece:

...
ForwardAgent yes
ForwardX11 yes
...

4. (Cliente) Conectarse al servidor:

ssh -Y usuario@nombre.servidor.com

Y lanzar la aplicacion (debe estar instalada en el servidor):

xeyes

Cliente Windows a servidor GNU/Linux

Instalar Cygwin con los servidores X, el paquete xorg-server

Puede que tengamos un icono para arrancar el servidor X de forma independiente.
En cualquier caso podemos arrancar uno desde la linea de comandos del cygwin con X -multiwindow.
Si arranca bien veremos el simbolo de X en los iconos al lado del reloj.
Ya tenemos un servidor X escuchando en localhost:6000. No cerrar la ventana de cygwin.

Ahora toca hacer tunel. Putty incorpora algo par aexportar las X directamente. A manija, sería algo como

# ssh -R 6070:localhost:6000 usuario@servidordestino

tras esto hacer:

# export DISPLAY=localhost:70.0

El 6070 es un ejemplo, que sea mayor que el 6010 es suficiente. Para probar un clásico xeyes o xclock y a correr.

Otra manera: Tenemos que tener instalado en el cygwin dentro de X11 el paquete xorg-server y ejecutamos:

# x -multiwindow

En nuestra máquina habilitamos que puedan exportar las X. Primero exportamos el display de las X:

# export DISPLAY=localhost:0

Y habilitamos las X:

# xhost +

Nos conectamos en el servidor remoto:

# ssh servidor

Ahora exportamos el display a nuestra IP:

# export DISPLAY=10.94.110.152:0

Y ya podemos abrir las x, xclock, etc…

GNU/LINUX - corkscrew

Instalar corkscrew

#ssh -X -R 6020:localhost:6000 -p 443 -F conectar root@lobo99.mine.nu

donde conectar es:
ProxyCommand /usr/bin/corkscrew <proxy> 80 %h %p clave

y clave es:
usuario_proxy:contraseña

En el fichero /etc/ssh/ssh_config de la máquina cliente

ForwardAgent yes
ForwardX11 yes
ForwardX11Trusted yes
Tunnel yes

Si hago un: #echo $DISPLAY
localhost:10.0

Cambio de usuario

Nos conectamos a una máquina y luego queremos cambiar de usuario y abrir las X. Con la opción -X habilitas forward de las x, también es con la opción -o ForwardX11=yes

# ssh -X root@servidor

Ahora se abre xclock
Si cambiamos de usuario no funciona

# su - usuario
# xclock
X11 connection rejected because of wrong authentication.
Error: Can't open display: localhost:10.0

Al cambiar de usuario tenemos que exportar el DISPLAY y añadir el usuario a xauth. Antes de cambiar de usuario miramos estas variables:

# ssh -X root@servidor
# echo $DISPLAY
localhost:10.0
# xauth list
servidor/unix:10  MIT-MAGIC-COOKIE-1  8403a4c4352d32a91ba4aaf100dea4eb
servidor/unix:11  MIT-MAGIC-COOKIE-1  6c9e0e5a530e5975c240dd633de514ee

Nos fijamos en la linea de nuestro display, que es la 10, es decir, la que pone unix:10 Ahora cambiamos de usuario y añadimos cambiamos las variables:

# su - usuario
# export DISPLAY=localhost:10.0
# xauth add servidor/unix:10  MIT-MAGIC-COOKIE-1  8403a4c4352d32a91ba4aaf100dea4eb

Y ya se abre xclock.

No funcionan X con un usuario (FALTACOMPROBAR)

Si al cambiar de usuario nos da el error:

# xclock

No protocol specified
Error: Can't open display: :0

Como root ejecutamos:

# xhost local:girish

X11 forwarding request failed on channel 0

Si nos da el error:

X11 forwarding request failed on channel 0

Comprobad que en el sshd_config del servidor tiene:

X11Forwarding yes
X11UseLocalhost no
informatica/linux/xwindow.txt · Last modified: 2015/06/25 10:42 by jose