- Estréllate y Arde - https://www.estrellateyarde.org -

Sesión X Window remota con SSH

Este método entunela las X mediante SSH, de manera que toda la información circula cifrada por la red, a diferencia del protocolo XDMCP que trasmite la información sin cifrar. SSH utiliza el puerto 22 TCP, por lo que tendremos que abrirlo en el firewall. (Puede usarse Telnet pero usaremos SSH por seguridad).

  • Abriremos una sesión X en el host cliente utilizando el comando xinit (no usaremos startx, ya que lanza el window manager):
    $ xinit

    Obtendremos una sesión X en la primera tty libre (si no tenemos otra sesión gráfica abierta será la terminal tty7) con un xterm abierto. En ese xterm ejecutaremos el comando:

    $ xhost +nombre_de_host

    Atención

    Nunca usaremos el comando xhost +, ya que permite a cualquier cliente conectarse y tomar el control de las X. Siempre especificaremos un host.

  • A continuación, abriremos una sesión SSH en el servidor desde cualquier terminal del host cliente, ejecutando en el host cliente el comando:
    $ ssh <IP_servidor>

    Por ejemplo:

    $ ssh 192.168.1.3
  • En la terminal SSH, estableceremos el valor de la variable DISPLAY, ejecutando el comando:
    $ export DISPLAY=<IP_host_cliente>:0

    Por ejemplo:

    $ export DISPLAY=192.168.1.2:0
  • Por último, ejecutaremos en la terminal SSH el comando que lanza el window manager (por ejemplo, icewm-session):
    $ icewm-session

    De esta manera obtendremos en la terminal tty7 la sesión X remota.

    En el host cliente tendremos activos los procesos servidor X (Xorg) y xterm, que cuelgan de xinit, y ssh:

    $ pstree
    init-+-
         |-login---bash-+-xinit-+-Xorg
                        |       |-xterm---bash
                        |-ssh

    Y en el servidor tendremos activo el proceso window manager (por ejemplo, icewm-session), que cuelga del demonio sshd:

    $ pstree
    init-+-
         |-sshd---sshd---bash---icewm-session
  • Si ya teníamos en el host cliente una sesión X local abierta, para iniciar una sesión X remota tendremos que especificar el DISPLAY tanto al lanzar xinit:
    $ xinit -- :1
    $ xhost +

    como al exportar la variable DISPLAY en la terminal SSH:

    $ export DISPLAY=192.168.1.2:1
    $ icewm-session

    Obtendremos una sesión X en la primera tty libre (por ejemplo la terminal tty8).

  • De la misma manera, si queremos abrir otra sesión X remota en el host cliente tendremos que especificar el DISPLAY tanto al lanzar xinit:
    $ xinit -- :2 &
    $ xhost +

    como al exportar la variable DISPLAY en la terminal SSH:

    $ export DISPLAY=192.168.1.2:2
    $ icewm-session

    Obtendremos una sesión X en la primera tty libre (por ejemplo la terminal tty9).

    En el host cliente tendremos activos los procesos:

    $ pstree
    init-+-
         |-login---bash-+-xinit-+-Xorg
         |              |       |-xterm---bash
         |              |-ssh
         |-login---bash-+-xinit-+-Xorg
                        |       |-xterm---bash
                        |-ssh

    Y en el servidor tendremos activos los procesos:

    $ pstree
    init-+-
         |-sshd-+-sshd---bash---icewm-session
                |-sshd---bash---icewm-session

Article printed from Estréllate y Arde: https://www.estrellateyarde.org

URL to article: https://www.estrellateyarde.org/so/x-remoto-ssh

Copyright © 2010 Estrellate y Arde