-X flag (Encaminhamento X11) não parece funcionar no Windows

13

Estou usando o Open SSH (OpenSSH_6.6.1p1, OpenSSL 1.0.1i em 6 de agosto de 2014) no Windows 8.1. O encaminhamento do X11 parece não estar funcionando. A variável de ambiente DISPLAY não parece estar definida.

Por exemplo, se eu usar BitVise ou Putty para me conectar e executar env, eu vejo:

[marko@vm:~]$ env
XDG_SESSION_ID=6
TERM=xterm
SHELL=/bin/bash
SSH_CLIENT=192.168.1.174 61102 22
SSH_TTY=/dev/pts/0
USER=marko
MAIL=/var/mail/marko
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
PWD=/home/marko
LANG=en_CA.UTF-8
NODE_PATH=/usr/lib/nodejs:/usr/lib/node_modules:/usr/share/javascript
SHLVL=1
HOME=/home/marko
LANGUAGE=en_CA:en
LOGNAME=marko
SSH_CONNECTION=192.168.1.174 61102 192.168.1.64 22
XDG_RUNTIME_DIR=/run/user/1000
DISPLAY=localhost:10.0
_=/usr/bin/env

Se eu usar o OpenSSH (ssh -X marko @ vm):

[marko@vm:~]$ env
XDG_SESSION_ID=8
TERM=cygwin
SHELL=/bin/bash
SSH_CLIENT=192.168.1.174 61150 22
SSH_TTY=/dev/pts/1
USER=marko
MAIL=/var/mail/marko
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
PWD=/home/marko
LANG=en_CA.UTF-8
NODE_PATH=/usr/lib/nodejs:/usr/lib/node_modules:/usr/share/javascript
SHLVL=1
HOME=/home/marko
LANGUAGE=en_CA:en
LOGNAME=marko
SSH_CONNECTION=192.168.1.174 61150 192.168.1.64 22
XDG_RUNTIME_DIR=/run/user/1000
_=/usr/bin/env
    
por abendigo 03.06.2015 / 03:46

2 respostas

14

Você definiu a variável de ambiente DISPLAY no cliente? Não sei qual shell você está usando, mas com o derivativo do shell Bourne (como o bash), por favor tente:

export DISPLAY=127.0.0.1:0
ssh -X marko@vm

Ou se você estiver usando o cmd.exe:

set DISPLAY=127.0.0.1:0
ssh -X marko@vm
    
por 11.06.2015 / 21:04
11

Quando você executa ssh -X remotehost e obtém DISPLAY=localhost:10 apresentado ao host remoto. ssh escuta essa porta e encaminha o tráfego de volta ao sistema de chamada, usando seu valor original de DISPLAY para determinar o endereço do servidor.

É provável que no seu sistema local você tenha DISPLAY=:0 . Ou se você não tiver, é como isso está sendo padronizado. Isso instrui o sistema local a usar o soquete do domínio UNIX para se comunicar com a exibição. Infelizmente, Xming no Windows não configurou esse soquete de domínio UNIX, então o encaminhamento ssh X11 falha com esse tipo de erro:

$ export DISPLAY=:0
$ ssh -X remotehost xlogo
connect /tmp/.X11-unix/X0: No such file or directory
Error: Can't open display: localhost:10.0

A correção - pelo menos no que diz respeito a Xming - é bastante simples. Modifique a variável DISPLAY para fazer referência a um soquete TCP de escuta em vez de um soquete de domínio UNIX.

$ export DISPLAY=localhost:0
$ ssh -X remotehost xlogo

Você pode ter que adaptar sua configuração Xming para escutar na porta TCP local 6000. Aqui está como inicio Xming :

Xming.exe :0 -clipboard -multiwindow

E aqui há evidências para confirmar que Xming está escutando na porta tcp / 6000:

$ netstat -na | grep ':6000 .*LISTEN'
  TCP    0.0.0.0:6000           0.0.0.0:0              LISTENING
    
por 11.06.2015 / 21:08

Tags