web-dev-qa-db-ja.com

-Xフラグ(X11転送)がWindowsで機能していないように見える

Windows 8.1でOpen SSH(OpenSSH_6.6.1p1、OpenSSL 1.0.1i 6 Aug 2014)を使用しています。 X11転送が機能していないようです。 DISPLAY環境変数が設定されていないようです。

たとえば、BitViseまたはPuTTYを使用して接続し、envを実行すると、次のようになります。

[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

代わりに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
16
abendigo

クライアントでDISPLAY環境変数を設定しましたか?どのシェルを使用しているかはわかりませんが、Bourne Shell派生(bashなど)を使用して、次のことを試してください。

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

または、cmd.exeを使用している場合:

set DISPLAY=127.0.0.1:0
ssh -X marko@vm
18
yaegashi

ssh -X remotehostを実行すると、リモートホストにDISPLAY=localhost:10が表示されます。 sshはそのポートをリッスンし、元の値DISPLAYを使用してトラフィックを呼び出し側システムに転送し、サーバーアドレスを決定します。

ローカルシステムでDISPLAY=:0を取得している可能性があります。または、そうでない場合は、それがデフォルトになっています。これは、ローカルシステムに、UNIXドメインソケットを使用してディスプレイと通信するように指示します。残念ながら、WindowsのXmingはそのUNIXドメインソケットをセットアップしないため、ssh X11転送は次のようなエラーで失敗します。

$ 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

修正は、少なくともXmingまではかなり簡単です。 DISPLAY変数を変更して、UNIXドメインソケットではなくリスニングソケットTCP=を参照します。

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

ローカルのTCPポート6000でリッスンするためにXming構成を適合させる必要があるかもしれません。ここに私がXmingを開始する方法を示します。

Xming.exe :0 -clipboard -multiwindow

そして、ここにXmingがポートtcp/6000でリッスンしていることを確認する証拠があります:

$ netstat -na | grep ':6000 .*LISTEN'
  TCP    0.0.0.0:6000           0.0.0.0:0              LISTENING
14
roaima

Windows10とXmingでsshを使用すると、次のように「良い」(?)結果が得られるようです。

set DISPLAY=localhost:0

オブジェクトC:\ dev\ttyを作成します。と

mkdir \dev
echo x > \dev\tty

ssh -Yを使用します(ssh -Xではありません)。

2
Paul Szabo