認証エラーのため X11 接続が拒否されました。

認証エラーのため X11 接続が拒否されました。

私が最初にやりたいことは:

サーバーにログインしたいですssh。次に、変更ユーザーを変更し、sudo su user私の画面でいくつかのアプリを実行します。

いくつかの同僚がこのようなことをしています。

su user
export DISPLAY=<IP>:0

効果がある


経由でサーバーに接続しますssh -X user@server。次にX11アプリケーションを起動します。これはうまくいきます(警告にもかかわらず)。

警告する:

libEGL warning: DRI3: failed to query the version
libEGL warning: DRI2: failed to authenticate
qt.qpa.xcb: QXcbConnection: XCB error: 1 (BadRequest), sequence: 414, resource id: 1897, major code: 155 (Unknown), minor code: 1

sudo su(または)を実行しsudo su userてプログラムを起動または実行すると、sudo myprogramエラーが発生します。

間違い:

X11 connection rejected because of wrong authentication.
qt.qpa.xcb: could not connect to display localhost:11.0
qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found.
    This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.

Available platform plugins are: eglfs, linuxfb, minimal, minimalegl, offscreen, vnc, xcb.

Aborted

この問題に関するいくつかの記事を見つけました。

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

SSH接続。認証エラーのため X11 接続が拒否されました。


したがって、/etc/pam.d/suファイルと/etc/pam/sudoファイルを次に展開します。

session  optional  pam_xauth.so 

後で以下を追加して変更しました/etc/ssh/sshd_config

X11Forwarding yes

sshdを再起動するだけですsystemctl restart ssh.servicessh -T説明するx11forwarding yes

しかし、何も変わらなかった。

何をすべきかを知っている人はいますか?変更した後は、ユーザープログラム構成の特定の変更を確認することが重要です。

答え1

多くの人が同じエラーメッセージを持ってここに来て、それがの使用とは何の関係もないという事実に気付かないsuでしょう。

Snapを使用してインストールされているすべての項目は機能しません。だからxeyesandはxclockうまくいくかもしれませんが、Ubuntuを新しくインストールしchromium-browserたり、firefoxUbuntuでは動作しません。

解決策は簡単です:export XAUTHORITY=$HOME/.XauthorityリモートX11アプリケーションを実行する前に。

答え2

不安定オプション:

ログインしたホストで実行

xhost +

または、もう少し安全にしてください。

xhost <IP you want to log in to>

これにより、リモートホストからの接続が許可されます。

これはなぜ安全ではないのですか?そのホスト上のすべてのプログラムとユーザー(または存在するホスト上のすべてのプログラム/ユーザーxhost +)は、画面にアクセスし、コンピュータで実行されているすべてのキーストロークを読み取ることができますxhost

より安全オプション:

リモートコンピュータにX11サーバーの認証キーを追加します。

ローカルコンピュータで必要な「魔法クッキー」を一覧表示します。

# xauth list
hostname/unix:0  MIT-MAGIC-COOKIE-1  0123456789abcdef0123456789abcdef

リモートシステムで~/.Xauthorityファイルに秘密を追加します。最も簡単な方法は次のとおりですxauth

# setenv DISPLAY <ORIGIN_IP>:0
# xauth add <ORIGIN_IP>:0 MIT-MAGIC-COOKIE-1 0123456789abcdef0123456789abcdef

これらのシステム間のX11プロトコルデータは暗号化されていないため、脆弱です。

答え3

user1が元のユーザー(パスワードを知っている)で、user2がターゲットユーザー(不明なパスワード)であると仮定すると、それを機能させることができます。

% ssh -Y user1@target-box
Password: xxxxxxxxxxxxx

user1@target-box% sudo -u user2 bash
Password: xxxxxxxxxxxxx

user2@target-box% cp  ~user1/.Xauthority  ~user2

user2@target-box% xterm &

また、投稿に正しいsshd設定が指定されているとします。

関連情報