ssh_exchange_identification:リモートホストによって接続が終了しました(hosts.denyを使用しません)。

ssh_exchange_identification:リモートホストによって接続が終了しました(hosts.denyを使用しません)。

はいいいえhosts.allowまた、またはを使用すると、hosts.denySSHは私のWindowsシステム(同じラップトップ、別のハードドライブ)では機能しますが、Linuxシステムでは機能しません。

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クライアントの多くの自動構成が同じエラーで終わることを除いて、構成せずに同じ結果を得ようとしました。

答え1

もともとAsk Ubuntuに投稿されました

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

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

そのような状況で私がしばしば非常に役に立つと思うのは、sshdデーモン化せずにプロセスを開始することです。私の問題は、意味のあるものを何も示していsyslogないということですauth.log

端末で実行すると、次の結果が表示されます。

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

はるかに良いです!このエラーメッセージにより、問題を特定して解決できました。両方のログファイルはこの出力を含みません。

気づく:少なくとも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やマシンへの帯域外アクセスを得るために追加料金を支払う必要がある物理サーバーの確認など)。あります)。 。

答え2

また、メモリが断片化されすぎてSSHセッションをホストするプロセスをフォークするために連続メモリページを割り当てることができないホストがある可能性があります。

この場合、次のいずれかのメッセージを受け取ることができます。

ssh_exchange_identification: read: Connection reset by peer

または:

Connection closed by aaa.bbb.ccc.ddd

ホストがジャンプする前にどのくらいの距離に行くかによって異なります。

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

答え3

もし備えてこういうことが私に起こったからです。ホストでsshdが実行されていることを確認してください!

これは愚かな失敗ですが、実際に問題になる可能性があります。

答え4

ssh_exchange_identification: read: Connection reset by peerループで16以上のSSHセッションを開始したスクリプトでこの問題が発生しました。 sshdは明らかに短い睡眠を追加することはできません。解決策... :D 反対者) 私の問題を解決しました。

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

関連情報