SSH ログイン中にリモートサーバーがランダムに中断されます。

SSH ログイン中にリモートサーバーがランダムに中断されます。

サーバーにSSHで接続しましょう。

ssh name@box-a

この時点で、通常、パスワードを入力するように求められ、ログインします。

ただし、時々SSHを試みるときにEnterキーを押した後、動作が停止し、パスワードを入力してサーバーにアクセスできません。エラーメッセージはなく、ただ停止します。この問題はすべてのユーザーに発生します。サーバーを再起動すると、問題は自然に解決されます。

ssh -vvv name@box-a

返品

OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011
debug1: Reading configuration data /etc/ssh_config
debug1: /etc/ssh_config line 20: Applying options for *
debug2: ssh_connect: needpriv 0
debug1: Connecting to box-a [box-a] port 22.
debug1: connect to address box-a port 22: Operation timed out
ssh: connect to host box-a port 22: Operation timed out

-------------------------------- 返信---------------- - -------------

6022にsshポートを追加しましたが、ファイルを編集したときに追い出されました。

Write failed: Broken pipe

その後、SSHを介して再試行します。

ssh -vvv -p 6022 name@IP-external
OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011
debug1: Reading configuration data /etc/ssh_config
debug1: /etc/ssh_config line 20: Applying options for *
debug2: ssh_connect: needpriv 0
debug1: Connecting to IP-external [IP-external] port 6022.
debug1: connect to address IP-external port 6022: No route to host
ssh: connect to host IP-external port 6022: No route to host

また、私はそうしました。

lastb

過去1日か2日間、何千ものログイン試行が行われました。私の考えではそうかもしれません。私はCentOS 6.5を使用しています。 Fail2banは私にとって最良の選択ですか?

答え1

新しい情報で更新:

私は設定が間違っているように始めませんし、fail2ban最終的に箱から出て自分自身を閉じ込めます。

代わりに、まずポートをsshd_configより高いポート番号に変更し、ユーザーのログインパスワードをより強力な20文字以上に変更します(sshdを再起動することを忘れないでください)。これにより、ログイン接続が減少することを確認してください。そうでない場合は、より極端なパスを選択してFail2banを設定することをお勧めします。ただし、もう一度注意を払ってインストールマニュアルをよくお読みください。


別のポート番号で実行される2番目のサービスを作成し、sshdログインの問題が発生するまでそのままにします。次に、次に問題が発生した場合は、他のユーザーに接続してsshd問題に関する追加情報を見つけることができるかどうかを確認します。

ポートからデバッグsshdを作成します6022(元のsshdはすでにポート22で実行されているため、これを行う必要があります)。

# nohup /usr/sbin/sshd -p 6022 -ddd > ~/sshd.log 2>&1 &
  • 北面:停止の影響を受けないコマンドを実行し、tty以外のコマンドで出力します。
  • -血:ポート番号の設定(この例では6022)
  • > ~/sshd.log 2>&1:stdoutとstderrを〜/ sshd.logにリダイレクトします。
  • &: コマンドが制御演算子 & によって終了すると、シェルはサブシェルのバックグラウンドでコマンドを実行します。シェルは、コマンドが完了するのを待たずに状態0を返します。

この新しいsshdは1つの接続のみを許可し、接続が成功すると終了します。

# ssh -vvv -p 6022 user@remotehostname
[OR]
# ssh -vvv -p 6022 user@remoteIPaddress

次回中断したら、次のことを確認できます。

  1. ポート22で実行されているsshdによって問題が発生しますか? 6022は成功しましたか?
  2. 22 と 6022 の両方が停止した場合は、-ddd サーバーの出力とクライアントの -vvv 出力のログを比較して、問題に関する追加情報が見つかるかどうかを確認できます。

確認できるもう1つはMTUです。以前は、サーバーとクライアント間のMTUサイズが一致しない同様の状況に遭遇しました。 2つを比較して矛盾があるかどうかを確認する必要があります。

[root ~]# ifconfig            # I removed sensitive information:
eth0      Link encap:Ethernet
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

答え2

私は以下をお勧めします:

  1. クライアントが接続を正しく閉じていることを確認してください。場合によっては、サーバーが接続を開いたままにして制限に達することがあります(netstat友達です)。
  2. 失敗したログイン試行のログを確認してください。無差別代入攻撃により、SSH サーバーが過負荷になっている可能性があります。
  3. インストールfail2ban- これらの試みを実行するIPを禁止します。 (自分をブロックしたくない場合は、IPを信頼するように調整してください。)
  4. 定義されたすべてのネームサーバーが/etc/resolv.conf正しく機能していることを確認してください。
  5. SSHD調整

sshd_config少なくとも以下が必要です。

 Port 57322 # not 22 and some high one - above 1024
 Protocol 2
 UseDNS no # it'll speed-up the connection process a bit (or even a lot if your DNS doesn't work well)
  1. ifconfig何度も実行して異常がerrorsないかdropped増えているか確認
  2. @DevNullがMTU検証を提案したように(ここでは友達ですが、低く設定して役に立つかどうかを確認する方がtcpdump簡単です。ip link set eth0 mtu 1462

関連情報