SSH X11転送( `ssh -X`)を使用してXアプリケーションを実行しようとすると、「ディスプレイを開くことができません」

SSH X11転送( `ssh -X`)を使用してXアプリケーションを実行しようとすると、「ディスプレイを開くことができません」

以下を使用してサーバーにログインできます。

ssh -X Hostip

ただし、コマンドを実行すると、xclock次のエラーが発生します。

Error: Can't open display: localhost:11.0

以下を使用して表示値を確認しました。

echo $DISPLAY

結果:

localhost:11.0

次に、sshd_configファイルでX11転送をYESに設定します。

X11Forwarding yes
X11DisplayOffset 10
X11UseLocalhost yes

私がここで逃したことについての提案はありますか?

答え1

使用-Y。 SSHのマニュアルページから:

-Yは信頼できるX11転送を有効にします。信頼できるX11転送にはX11 SECURITY拡張制御は適用されません。

それでも問題がある場合は、お試しください。$DISPLAYローカルボックスのIPに設定:

$ export DISPLAY='<ip_address>:11.0'

に設定する

$ export DISPLAY='127.0.0.1:11.0'

人々はこの問題に頻繁に遭遇するようです。Mac OS XのSSH。設定したいかもしれません。

X11UseLocalhost no

この場合も同様である。

答え2

これは私にとって効果的です。

変化

X11UseLocalhost yes

到着

X11UseLocalhost no

答え3

~に帰属https://unix.stackexchange.com/a/12772/61349診断メモを入手してください。

SSHクライアントがX11転送を要求していることを確認してください。-Vバナー

ssh example.com -X -v

特定のメッセージを見つけるには、次の手順に従ってください。

debug1: Requesting X11 forwarding with authentication spoofing.

問題の別の明白な兆候は、DISPLAY環境変数が設定されていないことです。空か設定されていない場合は、何か間違っています。少なくともによると上記の同じ記事を使用すると、これらの変数が自動的に設定されます。


SSH Control Masterを使用し、SSH接続は次のとおりです。

Host <hostname>
    ControlMaster auto
    ControlPath ~/.ssh/control/%r@%h:%p
    ControlPersist 10m

以前のSSH接続はX11Firwardingを要求しなかったため、ssh将来の呼び出しのオプションは使用されませんでした。だから私にとって

SSH-Xは完全に無視されます

「X11 転送要求」は表示されませんが、セッションを再利用する muxer が表示される場合。

debug1: auto-mux: Trying existing master
debug1: mux_client_request_session: master session id: 10

その後、その接続に対して現在のControlMasterを終了し、-X / -Yフラグを使用して再接続する必要があります。

ControlMasterを停止

ssh -O check <hostname>

Master running (pid=2758)

(これにより、ControlMasterを使用するすべてのアクティブ接続が終了します)

ssh -O exit <hostname>

Exit request sent.

答え4

私の場合は、macOSからXQuartzに転送しようとしたときにXQuartz端末(ドックのXQuartzアイコンを右クリックし、アプリケーション>端末をクリックして開く)でコマンドを実行してssh問題を解決しました。ssh -Y

関連情報