web-dev-qa-db-ja.com

ssh_exchange_identification:リモートホストによって接続が閉じられました(hosts.denyを使用していません)

私はnotを使用してhosts.allowまたはhosts.denyを使用しています。Linuxマシンではなく、Windowsマシン(同じラップトップ、別のハードドライブ)からSSHがさらに機能します。

ssh -vvv root@Host -p portは以下を提供します:

OpenSSH_6.6, OpenSSL 1.0.1f 6 Jan 2014
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 20: Applying options for *
debug2: ssh_connect: needpriv 0
debug1: Connecting to Host [Host] port <port>.
debug1: Connection established.
debug1: identity file /home/torxed/.ssh/id_dsa type -1
debug1: identity file /home/torxed/.ssh/id_dsa-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.6
ssh_exchange_identification: read: Connection reset by peer

Windowsマシンではすべてが正常に機能するため、セキュリティログを確認し、その中の行が同一であることを確認します。サーバーは2つの異なる「マシン」を同じように扱い、両方とも公開鍵認証で許可されます。

つまり、これは私のローカルArchLinuxラップトップの問題であるに違いないという結論につながります。

[torxed@archie ~]$ cat .ssh/known_hosts 
[torxed@archie ~]$ 

それは問題ではありません。

[torxed@archie ~]$ Sudo iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination 

ファイアウォール設定との競合はありません(今のところ)。

[torxed@archie ~]$ ls -la .ssh/
total 20
drwx------  2 torxed users 4096 Sep  3  2013 .
drwx------ 51 torxed users 4096 May 11 11:11 ..
-rw-------  1 torxed users 1679 Sep  3  2013 id_rsa
-rw-r--r--  1 torxed users  403 Sep  3  2013 id_rsa.pub
-rw-r--r--  1 torxed users  170 May 11 11:21 known_hosts

アクセス許可は問題ないようです(サーバー上で同じです)。/etc/ssh/ssh_configを構成せずに試したところ、クライアントで多数の自動構成が行われ、同じエラーが発生することを除いて、同じ結果が得られました。

88
Torxed

元はAsk Ubuntuに投稿されました

「外部」の要因を除外している場合は、通常、次の一連の手順が原因を絞り込むのに役立ちます。したがって、これはあなたの質問に直接答えるものではありませんが、エラーの原因を追跡するのに役立ちます。

トラブルシューティングsshd

このような場合に一般的に非常に便利だと思うのは、デーモン化させずにsshdを起動することです。私の場合の問題は、syslogも_auth.log_も意味のあるものを示さないことでした。

私がターミナルからそれを開始したとき、私は得ました:

_# $(which sshd) -Ddp 10222
/etc/ssh/sshd_config line 8: address family must be specified before ListenAddress.
_

ずっといい!このエラーメッセージにより、何が問題かを確認して修正できました。どちらのログファイルにもこの出力は含まれていませんでした。

NB:少なくともUbuntuでは、$(which sshd)が、絶対パスのsshd要件を満たす最良の方法です。そうしないと、次のエラーが発生します:_sshd re-exec requires execution with an absolute path_。 _-p 10222_はsshdを代替ポートでリッスンさせ、構成ファイルを上書きします。これは、実行中のsshdインスタンスと競合しないようにするためです。ここで空きポートを選択してください。

最後に、代替ポート(_ssh -p 10222 user@server_)に接続します。

この方法は、認証の問題やその他の種類の問題を見つけるのに何度も役立ちました。本当に詳細な出力をstdoutに取得するには、$(which sshd) -Ddddp 10222を使用します(詳細度を上げるためにddが追加されていることに注意してください)。デバッグの詳細については、_man sshd_を確認してください。


この方法の主な利点は、デフォルトのポートでsshdを再起動する必要がないsshd構成なしを確認できることです。 通常 これは既存のSSH接続に干渉しないはずですが、私はそれを確認しました。したがって、これにより、リモートサーバーへのアクセスを遮断する前に、構成ファイルを検証できます(たとえば、一部のVPSや、帯域外アクセスを取得するために追加料金を支払う必要がある物理サーバーの場合は遮断します)マシンに)。

66
0xC0000022L

また、SSHセッションをホストするためのプロセスをフォークするための連続したメモリをページに割り当てることができないほどメモリが断片化されているホストを使用することもできます。

このような場合、次のいずれかのメッセージを取得できます。

ssh_exchange_identification: read: Connection reset by peer

または:

Connection closed by aaa.bbb.ccc.ddd

ホストが救済するまでの距離によって異なります。

メモリの断片化が明らかな原因である場合、解決策は他の方法でサーバーにアクセスし、関連するサービスの一部を再起動することです。 VMにはスワップパーティションがないため、ApacheとMySQLがVMの原因であることがわかりました。それが失敗した場合は、ホストを再起動します。

13
gerrit_hoekstra

念のため、これは私に起こったからです。ホストでsshdが実行されていることを確認してください!

それは愚かな失敗ですが、本当にあなたの問題かもしれません。

8
txomon

このエラーは、サーバーへのsshセッションの超過が原因であることがわかりました。接続しようとしているホストを見つけ、すべてのクライアントからのすべてのセッションを強制終了しました。すべてのセッションをクリアした後、問題は解決しました。

6
NvipiN

私はssh_exchange_identification: read: Connection reset by peerループで16以上のSSHセッションを開始するスクリプトの問題。 sshdはどうやら追いつけません。短い睡眠を追加すると私の問題が解決しました:

for i in $(seq 32)
do
    ssh -f root@$Host "./test_server -p $(expr $BASE_PORT + $i)" > svr${i}.out
    # for > 8 connections, ssh has ssh_exchange_identification issues
    sleep 0.1
done
5
duanev

エラーが発生しましたssh_exchange_identification: Connection closed by remote Host SSHに接続しようとすると、ローカルコンピュータのSSHポート22にリモートポート転送を実行して、インターネット上のリモートサーバーから一時的にアクセスできるようにしました。

実際、エラーが表示されたのは、起動時にSSHサービスを無効にしたことを覚えていないため、ローカルコンピューターでSSHサービスを開始する必要があったためです:Sudo service ssh start

3
baptx

あるいは、昨夜私がしたことをして、/ var/emptyを削除したかもしれません。どうやらそのディレクトリとその権限はsshdの機能に不可欠であり、再起動してもディレクトリは再作成されません_/etc/init.d/sshd_は再起動に失敗し、systemdは何も理由を教えません。

フォアグラウンドでsshdを実行して問題を見つけました:

_# /usr/sbin/sshd -Dd
  Missing privilege separation directory: /var/empty/sshd
_

私の場合、ディレクトリを再構築すると問題が解決しました:

_drwxr-xr-x. root root  /var/empty
drwx--x--x. root root  /var/empty/sshd
_

Linuxプログラマへの注意:_/var/empty_の非常に重要なもの...本当に???

3
crashulater

まず最初に;ホストIPアドレスにtelnetして、ポート22がそのホストで実際にリッスンしている(開いている)かどうかを確認します。

telnet x.x.x.x 22

(そうでない場合は、コンソールケーブルを接続してログインできます)

私の場合、それは機能していなかったので、コンソールケーブルを接続してログインしました。ログインすると、そのホスト(Ciscoルーター)で5つすべてのVTY回線がビジーであることがわかりました。

VTY回線を解放するためにそこにぶら下がっていた古い接続をクリアしましたが、うまくいきました。コマンド「exec-timeout 15」をVTY行の下に追加しました。次に、コンソールケーブルを取り外しました。

レッスン:

すべてのデバイスで5〜10分のタイムアウトを設定してください(アクティビティが検出されない場合)。

1
Oumar

私の場合、誤ってソケットプロキシが設定されていました(機能していません)。まったく同じssh -vvv出力と空のsshdログが表示されました。

0
clarkttfu

最近作成されたコンテナーにrootユーザーでsshしようとすると、同様のエラーが発生しました。

ssh root@localhost -p 8022  
  ssh_exchange_identification: Connection closed by remote Host

# local port 8022 is redirected to container ssh port 22

どうやら、それはser(私の場合は「root」)パスワードがありませんでしたから発生しました。

ユーザーのパスワードを追加し、sshd(コンテナー内)を再起動したら:

echo 'root:<PASSWORD>' | Sudo chpasswd
Sudo service ssh restart

次に、コンテナーにSSH接続します。

0
Noam Manos

CentOS Linux release 7.4.1708 (Core)OpenSSH_7.4p1, OpenSSL 1.0.2k-fips 26 Jan 2017を使用して、接続の背後にあるポートをフィルタリングしていない:

ssh_exchange_identification:リモートホストによって接続が閉じられました

そして、ラズベリーPiがオフになっていることがわかりました。

電源が入っていないホストでは「ホストへのルートがありません」というエラーが発生すると考えていました。 Raspberry PiがISPルーターの背後にあるため、おそらく接続を閉じていました。

次に、別のインターネット接続から実験を繰り返し(電源がオフになっているRaspberry Piへの接続を試みました)、Debian StretchでOpenSSH_7.4p1 Debian-10+deb9u3, OpenSSL 1.0.2l 25 May 2017を使用してポートをフィルタリングしていませんでしたが、今回は期待通りでした:

ホストへのルートがありません

0

エラーssh_exchange_identification: Connection closed by remote Hostは、いくつかの不明な理由で発生する可能性があります。 Visual Studio codeを使用していたとき。 git pullコマンドを使用してリモートリポジトリからプルしようとしたときに、同じエラーが発生しました。

私は埋め込まれた端末を閉じた開いた Ubuntuの端末をもう一度引っ張っただけです。そしてそれは成功しました

0