ユーザー切り替え時にX11転送が失敗する

ユーザー切り替え時にX11転送が失敗する

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番目のユーザーはそのトークンにアクセスできません。いくつかの解決策があります:

  1. 他のユーザーとして X11 アプリケーションを実行しないでください。自分で xterm を起動し、別のユーザーとしてシェルを実行します。

    xterm -e sudo -s user2
    

    明らかに、このアプローチは他のユーザーとしてGUIアプリケーションを実行する必要がある場合は機能しませんが、より複雑になる前に常に考慮する価値があります。

  2. user2が認証なしでXサーバーにアクセスできるようにします。自分としてxhostを使用してこのユーザーを追加します。

    xhost +SI:localuser:user2
    
  3. 代わりにインストールsuxして使用してくださいsu。これは単純なシェルラッパーですが、最近は次の解決策のような解決策を考慮するとほとんど除外されます。
  4. 設定suしてsudo使用してくださいpam_xauth。これは(Debianの)標準モジュールですlibpam-modules。必要なのは行を追加するだけです

    session  optional  pam_xauth.so
    

    /etc/pam.d/suそしてに/etc/pam.d/sudo。他のオプションもありますが(manページを参照)、必ずしも必要とは思えません。

関連情報