ssh と sudo はあるが $DISPLAY がない

ssh と sudo はあるが $DISPLAY がない

通常、私はSSHでXアプリケーションを取得するためにこれを行います。sudo su

ssh -X server

OKIログイン

xauth list $DISPLAY

それは私に返ってくる

server/unix:10  MIT-MAGIC-COOKIE-1  blablablablabla

じゃあ私は

sudo su
xauth add server/unix:10  MIT-MAGIC-COOKIE-1  blablablablabla

そして、X アプリケーションを実行した後、それは正しいことがわかりました。

問題はCentos7にあります。

xauth list $DISPLAY

そして何も返ってきません。私はMITマジッククッキーを追加しようとしました。

xauth list

しかし、もちろんそれは機能しません。sudo なしの ssh 経由の通常の X 転送は機能します。

sshd の設定は 3 台のサーバーで同じです。

  1. スラックウェア作品
  2. hpux 作品
  3. セントロス7 動作しない

答え1

別の解決策としては、現在のユーザーの .Xauthority ファイルを root ユーザーのファイルとマージすることです。

  1. ssh user@host
  2. .Xauthority ファイルの権限を変更して、root もアクセスできるようにします。
  3. sudo su - root
  4. xauth merge /home/users/user/.Xauthority

テスト

gedit somefile.log

gedit ウィンドウが開きます。

答え2

解決策を永続的にするには、.bashrcログインユーザーのファイルを変更して追加します。

if [ -z "$XAUTHORITY" ]; then
    export XAUTHORITY=$HOME/.Xauthority
fi

sudoersさらに、行を追加してファイルを更新する必要があります

Defaults env_keep+="DISPLAY XAUTHORITY"

root がログイン ユーザーの.Xauthorityファイルに対して読み取り権限を持っている場合は、X アプリケーションを使用できます。

答え3

解決策が見つかりました。代替方法はここからコピーしましたブログ このスクリプトを使用する

userfirst=sshloginuser
usersecond=sudoorsuuser

$usersecond@host$

    su - $userfirst -c 'xauth list' |\
         grep `echo $DISPLAY |\
             cut -d ':' -f 2 |\
             cut -d '.' -f 1 |\
             sed -e s/^/:/`  |\
         xargs -n 3 xauth add

または単にuser1としてログインする

xauth list

su または sudo su user2

xauth add OUTPUTOFXAUTHLIST

答え4

非常にシンプルな汎用コマンド:

sudo xauth merge /home/$USER/.Xauthority

これにより、ルート環境がアクティブになり、現在の (非ルート) ユーザーの xauth 情報がマージされます。

別の方法として、Slackware のコメントで報告された所有権の問題を防ぐことができます。

cat ~/.Xauthority | sudo xauth merge -

関連情報