web-dev-qa-db-ja.com

sshが「チャネル1でX11転送要求に失敗しました」というメッセージを返す

どのタイプのX11デスクトップ環境も実行していないリモートサーバーにSSH接続すると、次のメッセージが表示されます。

$ ssh user@server
X11 forwarding request failed

$ ssh user@server ls
X11 forwarding request failed on channel 1
file1
file2
...

これらのメッセージを取り除くにはどうすればよいですか?

36
slm

これらのメッセージは、SSHオプションだけを使用して、3つの方法のいずれかで削除できます。メッセージはいつでも/dev/nullに送信することもできますが、これらのメソッドはメッセージを単にトラップしてダンプするのではなく、構成を通じてメッセージを処理しようとします。

方法#1-xauthをインストールする

リモート処理しているサーバーは、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
$

以降のログインでは、このメッセージは表示されなくなります。

方法#2-ForwardX11で無効にする

SSHパラメータForwardX11を含めることにより、sshクライアントにX11転送を有効にしないように指示できます。

$ ssh -o ForwardX11=no root@server

-xスイッチでも同じことができます。

$ ssh -x root@server

これは一時的にこのメッセージを無効にするだけですが、リモートサーバーにxauthをインストールできない、またはインストールしたくない場合に適したオプションです。

方法#3-sshd_configで無効にする

これは通常はデフォルトですが、そうでない場合は、sshdサーバーをセットアップして、X [Forwarding]がオフになるように/etc/ssh/sshd_configで設定できます。

X11Forwarding no

3つの方法のうち、ほとんどのサーバーでX11Forwardingをオンにすることがよくありますが、X11....警告を表示したくないため、通常は#2を使用します。

$ HOME/.ssh/config

ほとんどの場合、これらのメッセージは表示されません。通常、これらは$HOME/.ssh/configファイルの上部に次のエントリがある場合にのみ存在します。

ServerAliveInterval 15
ForwardX11 yes
ForwardAgent yes
ForwardX11Trusted yes

GatewayPorts yes

したがって、最終的にこれらのX11..メッセージの生成を促進するのはこの設定です。したがって、デフォルトでForwardX11 yesをオンにして操作する場合は、方法#2が最も適切であるように見えますが、その後sshクライアントの観点から、特定の接続に対して選択的に無効にします。

安全保障

一般に、常にForwardX11 yesをオンにして実行することはお勧めできません。そのため、SSH接続を可能な限り安全な方法で運用したい場合は、次のことを行うのが最善です。

  1. ForwardX11 yesファイルに$HOME/.ssh/configを含めないでください
  2. ForwardingX11は、ssh -X user@server経由で必要な場合にのみ使用してください
  3. 可能であれば、サーバーでX11Forwardingを完全に無効にして、許可しないようにしてください

参考文献

42
slm

今日これを走り回って、sshの設定を偶然見つけたまで、しばらく頭を殴りました。

RHEL 7(centOS、OELなど)で、ipv6が無効になっている場合は、次のものが必要です。

AddressFamily inet

/ etc/ssh/sshd_configに設定します。

13
Systemspoet

私の場合、この文字列を/etc/ssh/sshd_configに追加すると問題が解決しました。

X11UseLocalhost no
13
user3132194

別のわずかなバリエーションは、特定のサーバーでこのメッセージの表示を停止する(つまり、X11の転送の試行を停止する)必要があるが、他のすべての接続ではデフォルトをForwardX11 yesのままにする場合です。

このシナリオでは、〜/ .ssh/configで特定のホスト(または範囲)のX11転送を無効にすることができます。このようなもの:

Host 10.1.1.*
ForwardX11 no 

謝辞:これは、既存の(そして非常に完全な)既存の回答に対する少しの装飾です。コメントできなかったからです!

2
philarmour

クライアントを冗長モード(ssh -v user@Host) あなたにあげる

debug1: Remote: No xauth program; cannot forward with spoofing.

しかし、xauthが実際にサーバーにインストールされている場合、おそらくsshdxauth実行可能ファイルを間違った場所で探しているためです(/ usr/X11R6/bin/xauth通常)。設定することで修正できます

XAuthLocation /usr/bin/xauth

in / etc/sshd/sshd_config(またはサーバーが構成されているものすべて)。

2
Anton Samsonov

約10年前のsshd-xauthバグに遭遇した後、この質問に遭遇しました。 2つのソリューションが報告されています。1つ目はxauthをバイパスし、2つ目はバグに対処しています。


解決策1-xauthをバイパスする

  • local-Xserverを提供するローカルマシン。
  • remote-Xserverに送られるデータを駆動するアプリケーションを提供するリモートマシン

リモート/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
1
Craig Hicks

ホストごとのX11転送の構成

すでにここにあるすべての優れた回答に加えて、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
Mark Booth

設定を変更した後に注意すべき重要な点の1つは、変更を反映するためにsshdを強制終了する必要があることです。

cat /var/run/sshd.pid | xargs kill -1

rootユーザーであること。

0
unixia