SSHエージェントセッションが無期限に中断されました

SSHエージェントセッションが無期限に中断されました

Rubyでは、Net :: SSH :: Proxyを介して確立されたSSH接続フローがありますclient -> proxy server -> server(これはRubyの問題ではなくSSHの問題のようです)。接続が確立されると、接続が閉じられるまで、後続のコマンドがトンネルを介して送信されます。これは約99%の場合はうまく機能しますが、トンネルは無期限に開いたままになり、アクティブな接続があるときにサーバーを再起動することに関連しているようです。シナリオを手動で再現しようとすると(アクティブ接続中にサーバーを再起動する)、そうすることはできず、代わりにSSH接続が期待どおりに閉じます。

トンネルがこの不確実な開いた状態で停止している場合、で接続は確立され、client -> proxy server接続proxy serverも確立されserver続けます。しかし、server 確かにproxy server再起動後に意味のある確立された接続を表示します。

各ホストから収集されたデータ:

クライアント(OpenSSHを使用):

ps -o cmd= -p 8029
ssh -o strictHostKeyChecking=no [email protected] -p 2022 -W [10.100.202.65]:22

TZ=UTC0 ps -o lstart= -p 8029
Mon Jul  8 21:17:09 2019

プロキシサーバー(OpenSSHを使用):

sudo netstat -tnpa | grep 'ESTABLISHED.*sshd' | grep 10.100.202.65
tcp        0      0 10.100.201.246:47414    10.100.202.65:22        ESTABLISHED 29135/sshd: user1

サーバー(Dropbearを使用)

netstat -tnpa | grep 'ESTABLISHED.*dropbear' | grep 10.100.202.65
<...no results...>

date; uptime
Tue Jul  9 18:56:49 UTC 2019
18:56:49 up 21:37,  load average: 0.50, 0.56, 0.61

^ 接続が確立された後にサーバーが再起動されたことを確認し、server date - uptime= および client コマンドが実行されていることに注意してください。Mon Jul 8 21:19 UTCMon Jul 8 21:17 UTC

私の最初の考えは、プロキシサーバーのsshdがTCPKeepAlive無効になっているため、サーバーの切断を検出できないことでしたが、sshd_configで有効になっていることを確認しました。 TCPKeepAlive yes

また、プロキシサーバーでtcpdumpを実行しましたが、ターゲットサーバーで見た唯一のトラフィックは断続的に発生するARPでした。

sudo tcpdump -ni eth1 host 10.100.202.65
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth1, link-type EN10MB (Ethernet), capture size 65535 bytes
11:14:45.647479 ARP, Request who-has 10.100.0.2 (ff:ff:ff:ff:ff:ff) tell 10.100.202.65, length 46
11:14:45.660208 ARP, Request who-has 10.100.202.65 (ff:ff:ff:ff:ff:ff) tell 0.0.0.0, length 46
11:15:46.762554 ARP, Request who-has 10.100.0.2 (ff:ff:ff:ff:ff:ff) tell 10.100.202.65, length 46
11:15:46.782608 ARP, Request who-has 10.100.202.65 (ff:ff:ff:ff:ff:ff) tell 0.0.0.0, length 46
11:16:47.956901 ARP, Request who-has 10.100.0.2 (ff:ff:ff:ff:ff:ff) tell 10.100.202.65, length 46
11:16:47.974012 ARP, Request who-has 10.100.202.65 (ff:ff:ff:ff:ff:ff) tell 0.0.0.0, length 46

質問:SSH接続を開いたままにするのは何ですか?これを防ぐために使用できる他のSSHオプション(sshd設定またはコマンドラインパラメータ)はありますか?

編集する:私は問題を発見したと信じています。クライアントには、ssh_config次のServerAlive *オプションが含まれています。

    ServerAliveCountMax 3
    ServerAliveInterval 60

これで3分後にアイドルセッションが終了します。このパスのproxy serverエントリは、に接続するクライアントとしても機能しますserverproxy serverこれらのオプションは設定されていません。これでssh_config上記の項目に追加しましたproxy server。成功を報告するために別の編集を行います。

ベストアンサー1

おすすめ記事