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


33

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

$ ssh user@server
X11 forwarding request failed

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

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

回答:


38

これらのメッセージは、SSHオプションのみを使用して、3つの方法のうち1つで削除できます。いつでもメッセージを送信すること/dev/nullもできますが、これらのメソッドは、単にメッセージをトラップおよびダンプするのではなく、設定によってメッセージを処理しようとします。

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

リモーティング先のサーバーは、インストールされていない.Xauthorityため、ユーザーのファイルにエントリを作成できないという苦情を言っていますxauth。したがって、各サーバーにインストールして、この迷惑なメッセージを取り除くことができます。

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で無効化

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

$ ssh -o ForwardX11=no root@server

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

$ ssh -x root@server

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

方法#3-sshd_configで無効化

通常はこれがデフォルトですが、そうでない場合はsshd、X11Forwardingがオフになるようにサーバーをセットアップできます/etc/ssh/sshd_config

X11Forwarding no

X11Forwardingほとんどのサーバーで頻繁にオンにしたいが、X11....警告を見たくないので、私は通常#2を使用する3つの方法のうち

$ HOME / .ssh / config

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

ServerAliveInterval 15
ForwardX11 yes
ForwardAgent yes
ForwardX11Trusted yes

GatewayPorts yes

したがって、最終的にこれらのX11..メッセージの生成を駆動するのはこのセットアップです。したがってForwardX11 yes、デフォルトでonを使用する場合は、方法#2が最も適切に思えますが、sshクライアントの観点から特定の接続に対して選択的に無効にします。

セキュリティ

ForwardX11 yes常にonで実行することはお勧めしません。したがって、可能な限り最も安全な方法でSSH接続を操作する場合は、次のことを行うのが最善です。

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

参照資料



記録のために、私はそのメッセージを受け取っリモートサーバー上でXクライアントを実行しようとします。$ DISPLAYが設定されていなかったため、起動しませんでした。最初の提案でそれを修正することができました:xauthをインストールします。
トムエリス

13

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

X11UseLocalhost no

これは私にとってはうまくいきました(サーバーにはすでにxauthがインストールされていました)。ありがとう。
ポールヒギンズ

これは私の問題を解決するように見えましたが、なぜかはわかりません。3台の同一のDebian 7マシンになるはずのものがありますが、そのうちの1台はlocahostX11転送の受け入れを突然停止しました。他の2つのX11転送は引き続き機能します。何が変わったのでしょうか?
カイルストランド

12

今日これを走り回って、sshの設定に出くわすまでしばらく頭を打ちました:

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

AddressFamily inet

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


これに関連した場合のみ、エラーメッセージ...
ジャックWasey

何がおかしいのかわかりますか?今日私はこれに出くわし、グーグルで検索し、この記事を見つけ、4年前から自分のコメントを見つけて、「ああ、問題だ」と言った。
システム詩人

2

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

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

host 10.1.1.*
ForwardX11 no 

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


2

クライアントを冗長モード(ssh -v user@host)で実行すると、

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

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

XAuthLocation /usr/bin/xauth

、/ etc / sshd / sshd_configファイル(または任意のサーバーを用いて構成されています)。


これはCentOS 7で機能しました。それがまさに私が見ていたエラーメッセージです。
ブライアンミントン

これは私の問題で、Macにリモートでログインしようとしました。そこでは、正しい呪文はXAuthLocation / opt / X11 / bin / xauthでした
Leon Avery

1

ホストごとに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

sshd-xauth10年近く前のバグに遭遇した後、この質問に出会いました。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

0

構成の変更を行った後に注意すべき重要な点の1つは、sshdを強制終了して変更を有効にする必要があることです。

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

rootユーザーであること。


-2
  1. /etc/ssh/sshd_configRHELホストで次の2つのオプションを設定します

    X11Forwarding yes X11UseLocalhost no

  2. sudo /etc/init.d/sshd reload

  3. sudo yum install xauth
  4. -Xスイッチを使用してsshをRHELホストに戻します。 ssh -X yourname@rhelbox
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.