web-dev-qa-db-ja.com

SSHの問題:ソケットからの読み取りに失敗しました:ピアによって接続がリセットされました

OpenSSH_6.6p1をサーバーの1つにコンパイルしました。アップグレードしたサーバーにSSH経由でログインできます。しかし、ここからOpenSSH_6.6p1またはOpenSSH_5.8を実行している他のサーバーに接続できません。接続中に、次のようなエラーが発生します。

Read from socket failed: Connection reset by peer

ログの宛先サーバーで、次のように表示されます。

sshd: fatal: Read from socket failed: Connection reset by peer [preauth]

here で述べたように、cipher_spec[ssh -c aes128-ctr destination-server]を指定してみましたが、接続できました。デフォルトで暗号を使用するようにsshを構成するにはどうすればよいですか?ここで暗号が必要なのはなぜですか?

14
nitins

問題はサーバー側のバグのように聞こえます。クライアントが暗号のリストを送信すると、opensshサーバーはおそらく1回のシステムコールでリストを読み取ることができると期待します。

サポートされている暗号のリストが1つのパケットで送信できる長さよりも長い場合、サーバーは最初の呼び出しで予想よりも少ないバイトを取得する可能性があります。サーバーでの正しい動作は、残りのバイトを取得するために別の呼び出しを実行することです。しかし、表示される問題の説明から、暗号の完全なリストを一度に取得しなかった場合、サーバーは代わりに接続を閉じます。クライアントからの次のパケットが到着すると、サーバーは接続リセットをクライアントに送信します。

暗号の短いリストを使用するようにクライアントを構成すると、バグを回避できます。 opensshクライアントは、次の場所で暗号のリストを探します。

  1. コマンドラインで-c cipher_specまたは-o Ciphers = cipher_specを使用
  2. 〜/ .ssh/configで、関連するホストセクションまたは最初のホストの前にCiphers cipher_specを指定します。
  3. 〜/ .ssh/configと同じフォーマットを使用する/ etc/ssh/ssh_config
  4. コンパイル時にクライアントに組み込まれるデフォルトのリスト。

2つの構成ファイルは、それぞれユーザーごとの設定とシステム全体の設定です。エリックが提案したようにCiphers aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbcを使用すると問題なく動作します。

7
kasperd

Ssh構成ファイルで暗号を指定できます(/ etc/ssh/ssh_configなど、$ PREFIXに依存)。コマンドラインでsshクライアントに渡すオプションは、ssh(クライアント)設定ファイルで設定できます。

これが関連する行です(コメントを外すだけです):

#   Ciphers aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc
4
user130370

私のやり方 それを修正するには、誰かを助けることを願っています:

# Recreate Host keys
Sudo rm /etc/ssh/ssh_Host_*
Sudo ssh-keygen -A

# Re-install SSh
Sudo apt-get --reinstall install openssh-server openssh-client

値を追加してsshd_configを編集します

add :  MaxAuthTries 3

値のコメントを外してssh_configを編集します

Ciphers aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc
3

以下のファイル権限を600に変更することにより、この問題を解決しました。

/ etc/ssh/ssh_Host_dsa_key
/etc/ssh/ssh_Host_rsa_key
/etc/ssh/ssh_Host_ecdsa_key

また、「/ etc/ssh /」内の他のすべてのファイルの権限を644に変更しました。すべてのファイルは「root」が所有する必要があります。

以下は、「/ etc/ssh」ディレクトリの下のすべてのファイルに適切な権限を割り当てるための完全なコマンドセットです。

chown root:root/etc/ssh/* chmod 644/etc/ssh/*
chmod 600/etc/ssh/ssh_Host_dsa_key
chmod 600/etc/ssh/ssh_Host_rsa_key
chmod 600/etc/ssh/ssh_Host_ecdsa_key

0
jash