CentOS 6.6クラスタに自分でログインすると(を使用してssh -AY user@ipaddress
)、X11転送は正しく機能します。たとえば、ユーザーを切り替えてsudo su user2
実行しようとすると、xterm
次のエラーが発生します。
認証エラーのため X11 接続が拒否されました。
xterm Xtエラー:ディスプレイを開けませんでした:localhost:11.0
この場合、X11転送が機能するようにするにはどうすればよいですか?
答え1
使用すると、sudo su
すべての承認が失われる可能性があります。
SSH鍵認証を設定したらssh -AY user2@localhost
(または ssh -AY user2@localhost xterm
)を使用してください。
答え2
この問題を経験した人はあなたが初めてではありません。その理由はとても簡単です。 Xサーバーは認証トークンを要求するように(かなり合理的に)設定されており、2番目のユーザーはそのトークンにアクセスできません。いくつかの解決策があります:
他のユーザーとして X11 アプリケーションを実行しないでください。自分で xterm を起動し、別のユーザーとしてシェルを実行します。
xterm -e sudo -s user2
明らかに、このアプローチは他のユーザーとしてGUIアプリケーションを実行する必要がある場合は機能しませんが、より複雑になる前に常に考慮する価値があります。
user2が認証なしでXサーバーにアクセスできるようにします。自分としてxhostを使用してこのユーザーを追加します。
xhost +SI:localuser:user2
- 代わりにインストール
sux
して使用してくださいsu
。これは単純なシェルラッパーですが、最近は次の解決策のような解決策を考慮するとほとんど除外されます。 設定
su
してsudo
使用してくださいpam_xauth
。これは(Debianの)標準モジュールですlibpam-modules
。必要なのは行を追加するだけですsession optional pam_xauth.so
に
/etc/pam.d/su
そしてに/etc/pam.d/sudo
。他のオプションもありますが(manページを参照)、必ずしも必要とは思えません。