概要
SSHでサーバに接続して作業をしていた。が、横から話しかけられたり電話に出たりしていたらタイムアウトでSSHの接続が切れていた…なんていうことはよくありますよね。今回はSSH接続が切れないようにする方法を2つ紹介いたします。
前提
- MacOS使っています、SSHの接続はターミナルからおこないます。
- サーバ側の設定を変えるのはサーバを使っている他の方に迷惑がかかるので、クライアント側からタイムアウトを防止したい。(作業環境によるよね。)
方法1 定期的に生きていることをサーバに伝える
~/.ssh/config
にSSHの接続先情報を記述していると思いますが、そちらにServerAliveInterval
, ServerAliveCountMax
の設定をしてあげてください。
Host **** *****
HostName ********
IdentityFile ******
User *****
ServerAliveInterval 60
ServerAliveCountMax 5
以上のように設定をすると、サーバに対して60秒ごとにメッセージを送信します。
そして、サーバから応答がなかった場合にServerAliveCountMax
で指定した分確認します。なのでこの設定はサーバが応答しなくなって300秒後に接続切れとなります。
ServerAliveCountMax
は指定しなかった場合はデフォルトは3だった…きがします。
これである程度はコネクション切れはなくなると…思います。
(Mac自体がスリープに入ったりしたら生存メッセージを送れないのでコネクションが切れますが)
方法2 topコマンドを活用する
Linuxのリソース状況をリアルタイム監視するために使われるtopコマンドですが、このコマンドを実行している間は接続が切れません。
なので、SSHでサーバに接続して一瞬離れることがあればその場でtopコマンドを実行してください。
$ top
top - 22:38:04 up 109 days, 23:48, 1 user, load average: 0.00, 0.01, 0.05
Tasks: 115 total, 1 running, 114 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.6 sy, 0.0 ni, 99.4 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 2048124 total, 110228 free, 226068 used, 1711828 buff/cache
KiB Swap: 4194300 total, 4068144 free, 126156 used. 1492944 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
22071 komugit+ 20 0 154.0m 2.1m 1.5m R 1.9 0.1 0:00.03 top
1 root 20 0 186.4m 3.1m 2.1m S 0.0 0.2 16:04.47 systemd
2 root 20 0 0.0m 0.0m 0.0m S 0.0 0.0 0:02.50 kthreadd
3 root 20 0 0.0m 0.0m 0.0m S 0.0 0.0 0:03.90 ksoftirqd/0
5 root 0 -20 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 kworker/0:0H
6 root 20 0 0.0m 0.0m 0.0m S 0.0 0.0 0:25.82 kworker/u6:0
...
なんかカッコいい…。とりあえずリアルタイムでリソース状況が見られます。抜ける際はq
とかcontrol+c
を入力してください。
そして、本当のtopコマンドの使い方を知りたい方はQiitaにたくさんtopコマンドの使い方が載っているので調べてみてください…。
以上です。