リースされたUbuntuホストで実行するために必要なすべてのライブラリを含むGUIプログラムがありますが、ホスト自体はSSH接続中に-Xを使用してX転送を設定しようとしません。strace
ディスプレイUIプログラムは実行できますが、DISPLAYなしで停止します。リースされたホストへのrootアクセス権がなく、通常のユーザーのためにX11を転送するように構成されておらず、ホストサポートはユーザーをサポートしていないと言います。
コアプログラムが1つだけ必要ですが、X転送を行う方法はありますか?ssh -X -v
見てください:
OpenSSH_7.2p2 Ubuntu-4ubuntu2.4, OpenSSL 1.0.2g 1 Mar 2016
...
debug1: Remote: /usr/home/ipdb/.ssh/authorized_keys:2: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding
debug2: x11_get_proto: /usr/bin/xauth list unix:10.0 2>/dev/null
debug1: Requesting X11 forwarding with authentication spoofing.
debug2: channel 0: request x11-req confirm 1
...
X11 forwarding request failed on channel 0
ローカルホストとリモートホストの両方がファイアウォールの背後にあることを考慮して(したがってDISPLAY = $ REMOTEHOST:0は機能しません)、これを手動で設定する方法はありますか?このホストには、Ubuntuホストの同じdistバージョンからコピーしたxauthとxhostがあります。
~/.ssh/rc は接続中に実行されますが、パラメーターは渡されません。
/usr/bin/xauthへの参照がホストに存在しないようです。これは問題ですか?独自のSSHDを実行し、正しいxauthパスで設定できますか?
答え1
さまざまなガイドに従ってファイルを/etc/ssh/sshd_config
新しいディレクトリにコピーし、同じディレクトリで次のコマンドを実行して新しいキーペアを作成しました。
ssh-keygen -f myrsa -N ''
同様のLinuxシステムからxauth実行可能ファイルをコピーして同じディレクトリに配置しました。
その後、sshd_configファイルを次の行に変更しました。
Port 22220
HostKey /path/to/directory/myrsa
X11Forwarding yes
X11DisplayOffset 10
X11UseLocalhost no
XAuthLocation /path/to/directory/xauth
これで、次のコマンドを使用してポート22220でX転送が有効になっているSSHサーバーを起動できます。
/usr/sbin/sshd -d -D -f /path/to/directory/sshd_config
sshコマンドを使用して接続します。
ssh -X -p 22220 <hostname>
接続後に環境変数DISPLAYが設定されていることを確認してください。
そのホストでXプログラムを実行するには、いくつかのライブラリファイル(libxkbfile.so.1など)をXサポートがインストールされている同じLinuxシステムの同じディレクトリにコピーする必要がありました。以下をldd
実行してこれを実行しました。これを確認するプログラム、未解決のライブラリを見つけて、作業システムでそのライブラリを見つけ、ldconfig -p | fgrep libxkbfile.so.1
scpを使用してターゲットシステムにコピーしました。それから設定しました。
set LD_LIBRARY_PATH=/path/to/directory
これにより、別のライブラリを見つけてXプログラムを実行し、ローカルシステムでUIを表示できます。