ablog

不器用で落着きのない技術者のメモ

SSH のタイムアウトを防止する(Keep Alive を有効にする)

事象

例えば、EC2 の Amazon Linuxssh で接続して実行時間の長い*1コマンドを実行しているとタイムアウトして以下のメッセージが出力される。

packet_write_wait: Connection to **.***106.21 port 22: Broken pipe

解決策

クライアント(自分の場合は Mac)の ~/.ssh/config に以下を追記する。

ServerAliveInterval 60

上記の設定の場合、60秒間隔で Keep Alive のパケットが送信され、タイムアウトしなくなる。

環境

参考

     ServerAliveInterval
             Sets a timeout interval in seconds after which if no data has
             been received from the server, ssh(1) will send a message
             through the encrypted channel to request a response from the
             server.  The default is 0, indicating that these messages will
             not be sent to the server.

*1:かつ実行中に通信が発生しない