SSH時のclient_loop: send disconnect: Broken pipeの対処方法

技術

さくらVPSにSSH接続する際に

client_loop: send disconnect: Broken pipe

が頻発してしまったので対応方法をメモ。

原因

sshd_configのドキュメントを確認。
https://man.openbsd.org/sshd_config#ClientAliveCountMax
どうやらSSH接続の際にサーバー・クライアント間で通信がないとタイムアウトになり接続が解除される。
デフォルトのClientAliveIntervalは0のため、Client側の設定次第依存が大きい。

対処方法

ちょうどいい塩梅を見つけるのがベストだが、今回は以下の設定で対応

クライアント側の設定

無操作時に、通信をするように.ssh/configを修正する

$vi  ~/.ssh/config

#以下を追記
ServerAliveInterval 30
TCPKeepAlive yes

30秒に1回、通信を行えば常時接続できることを想定。

サーバー側の設定

サーバー側の応答閾値も変更する。

$sudo vi  /etc/ssh/sshd_config

#以下を追記
ClientAliveInterval 60

SSHを切った後にも接続が維持されることを避けるため、ClientAliveCountMaxはデフォルトのままにした。

また最後にsshdの再起動を行う。

$sudo systemctl reload sshd.service

コメント

タイトルとURLをコピーしました