-Xフラグ(X11転送)がWindowsで機能しないようです。


16

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

1
明白な1かもしれませんが、私はあなたのポストから確実に伝えることはできません-例えば、以下の、あなたが実際のWindowsにインストールされているXサーバを持っています bitvise.com/ssh-x11-forwarding

1
はい、私はXmingのXサーバー(持ってstraightrunning.com/xmingnotes
abendigo

あなたは-物事をテストするためだけに-PuTTYで同じことを試しましたか?そうでない場合は、試してみて、そこで動作するかどうかを確認することをお勧めします。
ポレモン

1
はい、パテで動作します。
アベンディゴ

今、Windows VMをチェックしています。これを機能させるためにPuTTYが設定する変数の種類をチェックするのと同じくらい簡単かもしれません。数時間後に返信を追加します。
ポレモン

回答:


16

設定しましたか DISPLAYクライアントで環境変数ましたか?どのシェルを使用しているかわかりませんが、Bourneシェル派生物(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

ありがとう、これはまさに私が行方不明でした!許可され次第、賞金を授与します。
アベンディゴ

理由を説明するだけでなく、単に答えるだけなので、私はロアイマの答え(下)に投票したことに注意してください。
アズレイ

2
したがって、roaimaの答えは、問題が発生した理由を説明していますが、問題の解決には役立ちませんでした。私は質問で、Windowsを実行していると説明しました。yaegashiの答えは、私の問題を解決するWindowsに入力するコマンドを与えてくれました。それが私がこの答えを選んだ理由です。
アベンディゴ

この回答に賛成票を投じるためだけにアカウントを登録しました。ここに到達する前に、私はずっとインターネットを検索していました。
リオウィング

3
この解決策は私には機能しません。set DISPLAY=anythingその後、環境変数の設定解除をssh -X user@remote返すCreateProcessW failed error:2 ssh_askpass: posix_spawn: No such file or directory Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).と、set DISPLAY=再びsshを正常に実行できますが、X転送は機能しません。DISPLAYを設定すると、ソフトウェアがこの方法でパスワードを要求するようになるのは意味がありません。github.com/PowerShell/Win32-OpenSSH/issues/1088 github.com/PowerShell/Win32-OpenSSH/issues/1088
Pavel Komarov

14

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

あなたのローカルシステムであなたが持っている可能性が高いですDISPLAY=:0。または、まだお持ちでない場合は、それがデフォルトとして設定されています。これにより、ローカルシステムはUNIXドメインソケットを使用してディスプレイと通信します。残念ながらXming、WindowsではそのUNIXドメインソケットを設定しないため、sshX11転送は次の種類のエラーで失敗します。

$ 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行く限り-かなり簡単です。DISPLAYUNIXドメインソケットではなく、リスニングTCPソケットを参照するように変数を変更します。

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

XmingローカルTCPポート6000でリッスンするように構成を調整する必要がある場合があります。開始方法は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

おかげで、私はこの正確な問題を抱えていました!:0は、接続がソケット経由で行われることを意味することを知りませんでした。localhost:0の略記だといつも思っていました。
アンドレアスラスター

Ubuntu for Windows&XmingのBashでも同じ問題が発生しましたが、これで解決しました!DISPLAYをに設定する必要がありましたlocalhost:0
ベンリチャーズ

なぜDISPLAY=:0WSL + XMingで問題xeyesなく動作するのssh -Xか?んssh -Xは異なる他のローカルのX11クライアントから$ DISPLAYを解釈?他のX11クライアントは自動的にフォールバックしますlocalhost:0が、ssh -Xではないのですか?
マルクスクーン

その上man Xで、DISPLAY =:0の空のホスト名は「最も効率的なローカルトランスポートが選択される」ことを意味します。そうかもしれssh -X比較が言っていることを行うには別のアルゴリズム用途xeyes
マーカスクーン

@MarkusKuhnおそらくWSL + XmingはCygwin + Xmingとは異なります。私は今それを使っているのがわかり、喜んDISPLAY=:0ssh -X転送しています。
ロアイマ

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.