
まず私がやりたいこと:
経由でサーバーにログインしたいです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
この問題に関する記事をいくつか見つけました。
ssh接続。認証が間違っているためX11接続が拒否されました
ファイルを拡張し/etc/pam.d/su
、/etc/pam/sudo
ファイルを
session optional pam_xauth.so
そして、後で/etc/ssh/sshd_config
次の点を追加して変更しました:
X11Forwarding yes
そしてsshdを再起動するとsystemctl restart ssh.service
、ssh -T
x11forwarding yes
しかし何も変わりませんでした。
何をすべきか知っている人はいませんか? 変更を加えた後は、ユーザーのプログラム構成の変更を確認することが重要です。
答え1
多くの人が同じエラー メッセージを表示して、それが の使用とは無関係であることに気付かないのでsu
、非常に異なる理由で同様の症状が発生していることを指摘したいと思います。
Snap でインストールされたものは動作しません。 とxeyes
は動作するかもしれませんが、 Ubuntu でのまたは のxclock
新規インストールは動作しません。chromium-browser
firefox
回避策は、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 構成も前提としていることに注意してください。