LoginSignup
15
15

More than 5 years have passed since last update.

SSHのタイムアウト防止策

Last updated at Posted at 2018-10-03

環境

SSHサーバ

  • CentOS 7.4
  • OpenSSH 7.4p1

SSHクライアント

  • MacOS High Sierra 10.13
  • OpenSSH 7.6p1

問題:SSHでしばしば接続が切断される(タイムアウト)

SSH接続してしばらく放置していると、介在するルータやファイアウォール等により一定期間通信のない接続が以下のようなメッセージと共に切断されてしまう。
設定によっては数分で切断されるため、非常に煩わしい。。。

... Connection reset by peer Connection to example.com closed.

(正確には通信断されてからしばらくするとクライアント側で上記メッセージが表示されている模様)

タイムアウトを回避する方法

  1. ルータ等の設定を変更する
  2. サーバ側またはクライアント側で定期的な接続応答確認を行うよう設定する(OpenSSHの場合)
  3. クライアント側から無害なパケットを定期的に送信する

タイムアウト回避方法詳細

1. ルータ等の設定を変更する

割愛
これが可能かつ望ましい方法となり得る場合はこちらをどうぞ


2. サーバ側またはクライアント側で定期的な接続応答確認を行うよう設定する

OpenSSHの場合、サーバ側で以下を設定するか、

/etc/ssh/sshd_config
ClientAliveInterval [秒数]
ClientAliveCountMax [回数]

クライアント側で以下をいずれかの設定ファイル1にて設定することで応答確認を行うようにすると切断されなくなる。

/etc/ssh/ssh_config または ~/.ssh/config
ServerAliveInterval [秒数]
ServerAliveCountMax [回数]

上記の設定後はsshサービスの再起動をお忘れなく。

CentOS7の場合

$ systemctl restart sshd

MacOS 10.13の場合

システム環境設定 > 共有 > リモートログイン 一度OFF → 再度ON


3. クライアント側から無害なパケットを定期的に送信する

PuTTYなど一部のクライアントソフトウェアでは、定期的にパケット送信して切断されないようにする機能(Heartbeat/KeepAlive機能)が提供されているようです。


  1. OpenSSHのクライアント用設定においては、デフォルトのシステム全体でのクライアント用設定ファイルは/etc/ssh/ssh_configだが、各ユーザがホームディレクトリ内で独自に設定ファイル(~/.ssh/config)を持つ場合はそちらが優先される 

15
15
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
15