どのタイプのX11デスクトップ環境も実行していないリモートサーバーにSSH接続すると、次のメッセージが表示されます。
$ ssh user@server
X11 forwarding request failed
$ ssh user@server ls
X11 forwarding request failed on channel 1
file1
file2
...
これらのメッセージを取り除くにはどうすればよいですか?
これらのメッセージは、SSHオプションだけを使用して、3つの方法のいずれかで削除できます。メッセージはいつでも/dev/null
に送信することもできますが、これらのメソッドはメッセージを単にトラップしてダンプするのではなく、構成を通じてメッセージを処理しようとします。
リモート処理しているサーバーは、xauth
がインストールされていないため、ユーザーの.Xauthority
ファイルにエントリを作成できないと不平を言っています。したがって、各サーバーにインストールして、この迷惑なメッセージを取り除くことができます。
Fedora 19では、次のようにxauth
をインストールします:
$ Sudo yum install xorg-x11-xauth
その後、サーバーにssh
を試みると、ユーザーの.Xauthority
ファイルにエントリが作成されているというメッセージが表示されます。
$ ssh root@server
/usr/bin/xauth: creating new authority file /root/.Xauthority
$
以降のログインでは、このメッセージは表示されなくなります。
SSHパラメータForwardX11を含めることにより、ssh
クライアントにX11転送を有効にしないように指示できます。
$ ssh -o ForwardX11=no root@server
-x
スイッチでも同じことができます。
$ ssh -x root@server
これは一時的にこのメッセージを無効にするだけですが、リモートサーバーにxauth
をインストールできない、またはインストールしたくない場合に適したオプションです。
これは通常はデフォルトですが、そうでない場合は、sshd
サーバーをセットアップして、X [Forwarding]がオフになるように/etc/ssh/sshd_config
で設定できます。
X11Forwarding no
3つの方法のうち、ほとんどのサーバーでX11Forwarding
をオンにすることがよくありますが、X11....
警告を表示したくないため、通常は#2を使用します。
ほとんどの場合、これらのメッセージは表示されません。通常、これらは$HOME/.ssh/config
ファイルの上部に次のエントリがある場合にのみ存在します。
ServerAliveInterval 15
ForwardX11 yes
ForwardAgent yes
ForwardX11Trusted yes
GatewayPorts yes
したがって、最終的にこれらのX11..
メッセージの生成を促進するのはこの設定です。したがって、デフォルトでForwardX11 yes
をオンにして操作する場合は、方法#2が最も適切であるように見えますが、その後ssh
クライアントの観点から、特定の接続に対して選択的に無効にします。
一般に、常にForwardX11 yes
をオンにして実行することはお勧めできません。そのため、SSH接続を可能な限り安全な方法で運用したい場合は、次のことを行うのが最善です。
ForwardX11 yes
ファイルに$HOME/.ssh/config
を含めないでくださいssh -X user@server
経由で必要な場合にのみ使用してくださいX11Forwarding
を完全に無効にして、許可しないようにしてください今日これを走り回って、sshの設定を偶然見つけたまで、しばらく頭を殴りました。
RHEL 7(centOS、OELなど)で、ipv6が無効になっている場合は、次のものが必要です。
AddressFamily inet
/ etc/ssh/sshd_configに設定します。
私の場合、この文字列を/etc/ssh/sshd_config
に追加すると問題が解決しました。
X11UseLocalhost no
別のわずかなバリエーションは、特定のサーバーでこのメッセージの表示を停止する(つまり、X11の転送の試行を停止する)必要があるが、他のすべての接続ではデフォルトをForwardX11 yesのままにする場合です。
このシナリオでは、〜/ .ssh/configで特定のホスト(または範囲)のX11転送を無効にすることができます。このようなもの:
Host 10.1.1.*
ForwardX11 no
謝辞:これは、既存の(そして非常に完全な)既存の回答に対する少しの装飾です。コメントできなかったからです!
クライアントを冗長モード(ssh -v user@Host
) あなたにあげる
debug1: Remote: No xauth program; cannot forward with spoofing.
しかし、xauth
が実際にサーバーにインストールされている場合、おそらくsshdがxauth実行可能ファイルを間違った場所で探しているためです(/ usr/X11R6/bin/xauth通常)。設定することで修正できます
XAuthLocation /usr/bin/xauth
in / etc/sshd/sshd_config(またはサーバーが構成されているものすべて)。
約10年前のsshd-xauth
バグに遭遇した後、この質問に遭遇しました。 2つのソリューションが報告されています。1つ目はxauth
をバイパスし、2つ目はバグに対処しています。
解決策1-xauthをバイパスする
リモート/etc/ssh/sshd_config
:
X11Forwarding no
X11DisplayOffset 10
X11UseLocalhost yes
リモート~/.Xauthority
が空であるか、存在しません
ローカル:
Xephyr -ac -screen 1280x800 -br -reset :2 &
DISPLAY=:2 ssh -fR 6010:/tmp/.X11-unix/X2 user@remote "DISPLAY=:10 xeyes"
テストでは、ローカルはUbuntu 18.05を実行し、リモートはDebian Jesseを実行していました。
私も このソリューションを投稿 別の質問への回答として。
解決策2-sshd/xauthバグに対処する
このソリューションは@systempoetの 上記のソリューション に近いですが、それだけでは不十分でした。
リモートで/etc/ssh/sshd_config
を変更することに加えて:
AddressFamily inet
リモートの/etc/hosts
も変更されました。
::1 localhost ip6-localhost ip6-loopback
どちらかがコメント化されている場合、エラーメッセージ
X11 forwarding request failed on channel 0
ssh -X ...
呼び出しの後に表示されます。さらに、/var/log/auth.log
はエラーを示しました:
sshd[...]: error: Failed to allocate internet-domain X11 display socket
バグを生成するためのテスト(修正前):
ローカルマシン:
$ Xephyr -ac -screen 1280x800 -br -reset -terminate :2 &
$ DISPLAY=:2 ssh -X user@remote
X11 forwarding request failed on channel 0
すでにここにあるすべての優れた回答に加えて、ForwardX11
をホストごとに構成できるため、server
だけがこのように失敗した場合は、~/.ssh/config
にエントリを追加できます次の形式のファイル:
Host server server.domain.dom
ForwardX11 no
このようなエントリを構成セット全体のエイリアスとして使用することもできます
Host my.server
HostName server.domain.dom
User user
Port 1234
ForwardX11 no
これは、 SSHおよびSCPのオートコンプリートサーバー名 を設定している場合に特に便利です。
設定を変更した後に注意すべき重要な点の1つは、変更を反映するためにsshdを強制終了する必要があることです。
cat /var/run/sshd.pid | xargs kill -1
rootユーザーであること。