macでAWSのEC2にSSH接続中に突然”Broken pipe”エラーが出て切断されてしまうことがあります。
このエラーは、SSHクライアントが送信したデータが到達する前にTCPコネクションが切断されてしまうことによって発生するようです。この問題の解決方法を紹介します。
解決方法
ホスト側の設定変更
ホスト側のSSHクライアント設定ファイルを編集します。このファイルは、ユーザーのホームディレクトリにある.ssh/config
ファイルです。次のコマンドを実行して、このファイルを開きます。
vi /Users/{ホスト名}/.ssh/config
config
ファイルに以下の設定を追加します。
Host *
ServerAliveInterval 60
TCPKeepAlive yes
これにより、すべてのSSH接続でTCPKeepAliveを有効にし、サーバーとの接続が切断されないようにします。
クライアント側の設定変更
クライアント側のSSHクライアント設定ファイルを編集します。このファイルは、/etc/ssh/ssh_config
です。次のコマンドを実行して、このファイルを開きます。
vi ~/.ssh/config
config
ファイルに以下の設定を追加します。
Host *
ServerAliveInterval 60
TCPKeepAlive yes
これにより、すべてのSSH接続でTCPKeepAliveを有効にし、サーバーとの接続が切断されないようになりました。