総当たりでXとの接続を取得するとします...
既にサーバー(Xが実行されている場所)でコマンドを実行していると仮定します。そうでない場合は、最初にそれを動作させ、その後クライアントから 'ssh -X user @ server)を使用します;)
xauthコマンドを実行する方法はいくつかあります。たとえば、「sudo」を使用している場合でも、環境変数が失われるか、変更される可能性があります。次の環境変数を保持する必要があります:DISPLAYおよびXAUTHORITY。そうであるかどうかをテストするには、コマンドを実行するのと同じ方法で 'echo $ XAUTHORITY'を実行できますが、それらのコマンドを実行する前に環境変数を展開していないことを確認してください。たとえば、sudo bash -c 'echo "$ XAUTHORITY"'を試して、sudoを実行した後のXAUTHORITYの実際の状態を確認します(消えた場合は、sudoersファイルに何かを追加する必要がある場合があります。
最終的に、サーバー上で、アクセスしたいユーザーとして次のコマンドを実行します。
xauth info
これにより、使用される「Authority file」が表示されます(デフォルトでは/root/.Xauthority、rootの場合、または/home/theuser/.Xauthorityなど)。正しい.Xauthorityファイルが表示されていれば、実際にXAUTHORITY環境変数を心配する必要はありません(実際、そのファイルの非標準の場所を操作したい場合を除いて、実際にXAUTHORITY環境変数が表示されない場合はわかりません) )。
そのファイルを削除します(存在する場合):
rm /root/.Xauthority
/root/.Xauthority
ケースに合った正しいXAUTHORITYファイルに置き換えます。
再作成しますが、空です(これは多くのコマンドに必要です):
touch /root/.Xauthority
この時点で、以前にInvalid MIT-MAGIC-COOKIE-1を取得した場合でも、No protocol specifiedエラーが表示されます。Xサーバーが現在使用しているオーソリティファイルを見つけます。
ps aux | grep Xorg
次のように表示されます。
root 1153 0.0 1.0 149560 44464 tty7 Ss+ dec02 0:00 /usr/lib/xorg/Xorg -nolisten tcp -auth /var/run/sddm/{ef18c483-7891-4e82-80ef-2c8f9bd79711} -background none -noreset -displayfd 17 vt7
後のファイル名-auth
は、次のコマンドで必要なものです。これをルートとして実行します:
sudo xauth -f '/var/run/sddm/{ef18c483-7891-4e82-80ef-2c8f9bd79711}' list
32桁の16進キーがリストされています。たとえば、出力は次のようになります。
hostname/unix:0 MIT-MAGIC-COOKIE-1 c0eaf749aa252101a0f57d5087089db7
それを使用して.Xauthorityファイルを生成します(再度ログインする必要があるユーザーとして):
xauth add $DISPLAY MIT-MAGIC-COOKIE-1 c0eaf749aa252101a0f57d5087089db7
「c0eaf749aa252101a0f57d5087089db7」をlistコマンドで返されたものに置き換えてください。これで、.Xauthorityのサイズは51バイトになり、Xサーバーに接続できるようになります(再び)。