X problema de túnel desde la máquina remota

X problema de túnel desde la máquina remota

Estoy intentando hacer un túnel en una ventana x. Si lo hago:

user@local: ssh -X user@remote  xclock

funciona. Sin embargo, si inicio sesión en la máquina primero y luego inicio el programa, falla.

user@local: ssh -X user@remote

user@remote: xclock
No protocol specified
Error: Can't open display: :0

¿Qué salió mal?

Editar

Revisé la $DISPLAYvariable en el control remoto:

user@local: ssh -X user@remote "echo $DISPLAY"
:0.0

configurarlo en el mismo valor en el control remoto después de iniciar sesión no funciona. Configurar como funciona $DISPLAYlo :10.0sugerido.

user@local: ssh -X user@remote
user@remote: DISPLAY=:10.0 xclock

Todavía no entiendo por qué necesito diferentes valores de $DISPLAY para la sesión interactiva y la no interactiva.

Respuesta1

Compruebe que la variableMOSTRARestar correctamente configurado enservidor local: 10.0. Si no es,

export DISPLAY=localhost:10.0 

, entonces intentax relojde nuevo.

Pero ¿por qué necesito que 'DISPLAY' sea 10.0 en lugar de 0.0?

Elservidor x(oVentana X, oX11) es exactamente eso, un servidor, esperando que las aplicaciones se conecten a él para poder mostrarlas. Eso ocurre en su PC, donde las aplicaciones se conectan al servidor X a través de un socket ubicado en/tmp, normalmente llamado/tmp/.X11-unix. Sin embargo, como todos los servidores,X11Se puede contactar desde PC remotas y mostrar gráficamente las aplicaciones que se ejecutan en PC remotas.

Sin embargo, esta capacidad conlleva muchos riesgos de seguridad, por lo que abrir su servidor X11 a aplicaciones remotas es muy difícil (debe especificar la misma opción al menos tres veces, en diferentes archivos de configuración).

Ahora entrassh, lo que en cambio lo hace seguro: es el-Y/-Xopción desshque maneja de forma segura (también cifrando el tráfico) todos los detalles de la apertura de su servidor X11 local a la aplicación remota. Sin embargo, cuando desee mostrar elremotoxclock localmente, debe indicarle a la aplicación remota que el servidor X11 con el que se va a contactar no es su propio servidor X11, sino uno en una PC distante (aquella desde la cual inició elsshsesión). Entoncesx relojdebe enviar su salidanoa un enchufe local en/tmpsino a un puerto de red (es127.0.0.1:6010, cualsshafortunadamente se acorta aservidor local: 10), a partir del cualsshse encargará de enviarlo de regreso a su PC local, donde eventualmente se mostrará gráficamente el resultado.

Si no le gusta que las diferentes conexiones ssh (es posible que tenga varias) estén separadas por10unidades, como enservidor local: 10.0, servidor local: 20.0, ...) deberías cambiar la declaración

X11DisplayOffset 10

en/etc/ssh/sshd_configa lo que quieras (aunque, para ser honesto, no veo ninguna razón para esto).

Es esta declaración la que hace que las pantallas remotas estén disponibles.noen el puerto6000(cuál podría serservidor local: 0.0), pero en puerto6010. Puedes comprobarlo tú mismo:

$ ssh -Y vps
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Mon Apr 17 02:47:42 2017 from 
root@vps:~# ss -lntp | grep 6010
LISTEN     0      0                 127.0.0.1:6010                     *:*      users:(("sshd",16172,8))
LISTEN     0      0                       ::1:6010                    :::*      users:(("sshd",16172,7))

información relacionada