
XVncを実行しているRed Hat 7.3サーバーがあります。 Windows 10デスクトップにPuttyとXmingをインストールしました。 PuttyはX11配信用に設定されています。 SSHを介して標準/権限のないユーザーとしてログインしてXアプリケーションを実行すると、Windows 10デスクトップに問題なく表示されます。
同じセッション内でより高い権限を持つアカウントを使用してXアプリケーションを実行しようとすると、「エラー:ディスプレイを開けません」というメッセージで失敗します。
標準ユーザーセッションで$ DISPLAYをエコーすると、自動的に「IP_ADDRESS:10.0」に設定されます。私のsuセッションでは$ DISPLAYが空です。 DISPLAY変数を同じ値にエクスポートしようとしましたが、「PuTTY X11プロキシ:サポートされていない認証プロトコルエラー:ディスプレイを開けませんでした:server_IP:10.0」という別のエラーが発生しました。
他のユーザーのコンテキストで動作するようにX11転送を設定するにはどうすればよいですか?
答え1
次の手順に従って問題を解決する必要があります。
動作user1
していて使いたいと言ってください。user2
のためuser1
:
$ xauth list $DISPLAY
<output1>
$ echo $DISPLAY
<outoput2>
別のユーザーに切り替えます。user2
$ xauth add <output1>
$ export DISPLAY=<output2>
努力する:
$ xclock
答え2
X11 は、接続がユーザーに属していることを示すためです。SSH経由でログイン。
X11Forwarding
このメカニズムは、他の人がディスプレイを使用することを許可しません。
幸いにも解決策があります。別のユーザーを使用して変更しsu
たら、次のコマンドを実行します。
xauth add $(xauth -f ~username/.Xauthority list | tail -1)
元のユーザー~username
、つまりサーバーに接続したユーザーはどこにありますか?
明らかに、新しいユーザーに十分な読み取り権限がある場合~username/.Xauthority
(つまり、これsu
はroot
問題がなく、他のユーザーにとってこれが機能する場合)可能機能しない場合は、権限を確認/変更する必要があります)。
答え3
Danieleのソリューションが少し変更されました。
xauth add $(xauth -i -f ~username/.Xauthority list | tail -1)
この-i
オプションはロックを無視するため、コマンドはxauth list
中断されません。