helen's blog

ずっとおもしろいことしてたいな。

ターミナルのSSH接続が切れすぎるので設定いじった話

結合テストでログを見たくてtail -f していたはずが
いつの間にかssh接続が切れていてログの更新が見れなくてイライラしたので
ターミナルの設定をいじってしまえという結論に

しかも

> AのsshはきれないけどBはきれますよ

ということでターミナルだけの問題ではなさそうなので
サーバーの設定も確認してみました

サーバーの設定確認
# 場所
/etc/ssh/sshd_config

# A
$ cd /etc/ssh/
$ sudo egrep "Client" ./* 
./sshd_config:#ClientAliveInterval 0 # なぜかコメントアウトされている
./sshd_config:#ClientAliveCountMax 3 # なぜかコメントアウトされている
 
# B
$ cd /etc/ssh/
$ sudo egrep "Client" ./* 
./sshd_config:#ClientAliveInterval 15 # なぜかコメントアウトされている
./sshd_config:#ClientAliveInterval 0 # なぜかコメントアウトされている
./sshd_config:#ClientAliveCountMax 3 # なぜかコメントアウトされている
./sshd_config:ClientAliveInterval 15 # なぜか設定されている
./sshd_config:ClientAliveCountMax 3 # なぜか設定されている

ターミナルの設定をいじってみる

標準ターミナル(Mac)の場合
# ~/.ssh/config
ServerAliveInterval 300
TCPKeepAlive yes

5分おきにパケット送信されるように設定

iTermの場合

f:id:heleeen:20151209145447p:plain
赤枠のとこにチェックいれて20とか入れとく

参考:
MacのSSHクライアントでkeep-alive | Scribble

サーバ側の設定の仕方

ClientAliveInterval
  • タイムアウトになる秒数
  • 設定しておくと一定時間ごとに通信を行うため自動で切断されなくなる
ClientAliveCountMax
  • タイムアウトになった時に試す回数
  • ClientAliveInterval × ClientAliveCountMax (秒)接続が保たれます

参考
SSHコマンドでKeepAliveするにはどうすればいいのでしょうか - それマグで!
sshでConnection reset by peerと接続が切れるのを防ぐ

結合テスト前にこの設定しとけば
あんなにイライラしなくて済んだのに...