私のローカルコンピュータからリモートサーバーへのssh
認証とXディスプレイの認証。このプロセスで使用されることがわかっており、MIT-MAGIC-COOKIES
認証プロセスが機能するには、サーバーとクライアントの値が同じでなければなりません。
ところで、リモートサーバーにログインして確認してみるとxclock
、xclock
リモートサーバーのCookie値
chulhyun@chulhyun-Inspiron-3420:~$ ssh -X Black@$labcom
Last login: Wed Jun 25 10:02:25 2014 from
Black@Black-PC ~
$ xclock ### xclock appears in local machine.
Black@Black-PC ~
$ xauth list
Black-PC/unix:10 MIT-MAGIC-COOKIE-1 708f623489b1ea129a77e98287d130ca
ローカルコンピュータのCookie値
chulhyun@chulhyun-Inspiron-3420:~$ xauth list
chulhyun-Inspiron-3420/unix:0 MIT-MAGIC-COOKIE-1 5ddd2ce92004eab53ceee8a64b7b88c0
ご覧のとおり、クッキーの値は両方のコンピュータで異なります。それでは、Xモニターが機能しないようにする必要はありませんか?
私がここで何を見逃しているのでしょうか?
$XAUTHORITY
PS:ファイルへのパスがあると聞き、xauthority
ローカルコンピュータでパスを確認しました。
chulhyun@chulhyun-Inspiron-3420:~$ echo $XAUTHORITY
/var/run/gdm/auth-for-chulhyun-iZfH2u/database
「データベース」ファイルを表示すると、内容が奇妙な文字で構成されているため、内容を読み取ることができません。
^A^@^@^Vchulhyun-Inspiron-3420^@^A0^@^RMIT-MAGIC-COOKIE-1^@^P]?,? ^D??<??? K{??
これが問題に関連している可能性がありますか?
修正する
リモートサーバーxhost
の結果$XAUTHORITY
Black@Black-PC ~
$ xhost
access control enabled, only authorized clients can connect
SI:localuser:chulhyun
Black@Black-PC ~
$ echo $XAUTHORITY
*定義されていないことが判明しました$XAUTHORITY
...これは正常ですか?
xhost
ローカルコンピュータの結果
chulhyun@chulhyun-Inspiron-3420:~$ xhost
access control enabled, only authorized clients can connect
SI:localuser:chulhyun
答え1
SSHがリモートサーバー側に確立されたトンネルを介してX11接続のプロキシを実行する方法と、マジックCookieが通常どのように機能するかについて混乱しているようです。 SSHのマニュアルページから:
抜粋The DISPLAY value set by ssh will point to the server machine, but with a
display number greater than zero. This is normal, and happens
because ssh creates a “proxy” X server on the server machine for forwarding
the connections over the encrypted channel.
ssh will also automatically set up Xauthority data on the server machine.
For this purpose, it will generate a random authorization cookie,
store it in Xauthority on the server, and verify that any forwarded
connections carry this cookie and replace it by the real cookie when the
connection is opened. The real authentication cookie is never sent to the
server machine (and no cookies are sent in the plain).
したがって、リモートサーバー側に表示されるマジッククッキーは、実際にはローカルサーバー(ユーザー側)にある実際のマジッククッキーではないようです。 SSH経由でリモートサーバーに接続すると、DISPLAYが次のように設定されることに注意してください。
$ echo $DISPLAY
localhost:11.0
マジッククッキーは次のように接続されています$DISPLAY
。
$ xauth list
remotey.dom.com/unix:11 MIT-MAGIC-COOKIE-1 00f505f4c5731714d30f24a956d4cb8f
私たちが聞くのはです/unix:11
。これは、通常発生するローカルサーバーのX11ではなく、SSH接続のローカル側のためのマジッククッキーです:0
。
.X 権限
ファイルにマジッククッキーが含まれているのは事実ですが、バイナリファイルであり、通常はコマンドを介して対話しますxauth
。これについての詳細は、xauth
マニュアルページを参照してください。
手動で
通常、次の操作を行うと、このメッセージが表示されます。
$ ssh -X user1@remotey
$ su - user2
$ xclock
X11 connection rejected because of wrong authentication.
X connection to localhost:10.0 broken (explicit kill or server shutdown).
これは、2人目のユーザーが.Xauthority
初めてログインしたときにSSHを介して渡されたマジッククッキーについて何も知らないためです。xauth add
user1として必要なものを作成し、次のようにuser2として使用できます。
$ ssh -X user1@remotey
$ echo $DISPLAY
localhost:10.0
上には#が表示されています:10.0
。これでxauth add
、このディスプレイに必要な#を作成します。
$ echo xauth add $(xauth list ${DISPLAY#localhost})
xauth add remotey.dom.com/unix:10 MIT-MAGIC-COOKIE-1 111ef940f6d75b4a9eb64ea3579ef67e
それではuser2になり、追加してください。
$ su - user2
$ xauth add remotey.dom.com/unix:10 MIT-MAGIC-COOKIE-1 111ef940f6d75b4a9eb64ea3579ef67e
$ xclock
予想される時計マークを取得します。
メモ:上記を学んだら、単一のコマンドラインで操作を実行できます。
suを使う$ xauth extract - ${DISPLAY#localhost} | \
su - user2 -c "xauth merge -; xclock"
sudoを使う
$ xauth extract - ${DISPLAY#localhost} | \
sudo su - user2 -c "xauth merge -; xclock"