状況を考えてみてください。 SSH経由でシステムAからシステムBにログインし、システムAにXセッションがあり、BでXプログラムを実行したいと思います。
ssh -X B
この作業を透明にします。しかし、X11Forwarding yes
サーバー構成が欠落していて、サーバーに対するroot権限もなく、サーバー管理者が無関心であればどうなりますか?
SSHトンネルを介して必要なものは何でもパイプできるため、X11接続を渡すことは明らかに可能です。実際、ローカルXサーバーがTCP接続を許可する場合は非常に簡単ですssh -R 6010:localhost:6000
(ディスプレイの数に応じて調整されます)。ローカルXサーバーがソケット接続のみを許可する一般的なケースはどうですか?最小限の設置要件(特にB)でXを簡単かつ安全に配信する方法は?
答え1
X11がソケットと通信するときとTCPポートで通信するときに使用するプロトコルは異なりますか?
ssh -R 6010:localhost:6000
おそらく、ポート転送を介してX11データを取得し、ncを使用して、次のようにtcpポートとX11ソケットリスナー間のローカルgabを接続するための提案された使用方法を統合できます。
nc -l -p 6000 > /tmp/.X11-unix/X0
答え2
@Demiの答えは素晴らしいですが、書くことがたくさん役に立つと思います。
- local - Xserver をサービスするローカルシステムです。
- リモート – Xserverにデータを送信するアプリケーションを提供するリモートコンピュータ
静かな/etc/ssh/sshd_config
:
X11Forwarding no
X11DisplayOffset 10
X11UseLocalhost yes
リモコンが~/.Xauthority
空か存在しません。
場所で:
Xephyr -ac -screen 1280x800 -br -reset :2 &
DISPLAY=:2 ssh -fR 6010:/tmp/.X11-unix/X2 user@remote "DISPLAY=:10 xeyes"
テストでは、Ubuntu 18.05はローカルで実行され、Debian Jesseはリモートで実行されました。
答え3
Xepyrを使用して追加のXサーバーを起動します。これはセキュリティのためのものです。リモートシステムがシステムを損傷するのを防ぎます。
SSHを使用してリモートソケットをXepyrソケットに渡します。 SSHはUnixソケット配信もサポートしています。
リモートサーバーの環境変数を正しく設定してください。