「一定期間操作のないbashを自動的にログアウトする方法」の版間の差分
行54: | 行54: | ||
$ vim | $ vim | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | ただし、tmuxやGNU Screen | + | ただし、tmuxやGNU Screen のようなターミナルマルチプレクサを起動した場合、入力がないとターミナルマルチプレクサとシェルの両方が終了してしまいます。screenの上で、topなどのコマンドを動かしていれば、切断されません。 |
host1 で TMOUT が設定されいても、host2 で設定されていなければ、[[ssh]]は、継続します。 | host1 で TMOUT が設定されいても、host2 で設定されていなければ、[[ssh]]は、継続します。 |
2015年9月22日 (火) 22:22時点における最新版
sshでサーバにログインしたときに、ログアウトをし忘れることがあるでしょう。bashでは、一定期間操作をしない場合、自動的にログアウトする機能があります。
読み方
- bash
- ばっしゅ
概要
sshのログインしっぱなしのセッションが残っていることは、好ましい状態ではありません。
設定
.profile 等に以下の設定をします。
例えば、10分間の入力がないときに、ログアウトさせたい場合には、60 * 10 の 600 を指定します。
export TMOUT=600
/etc/profile に設定して、上書きを禁止する場合には、このように書きます。
TMOUT=300 readonly TMOUT export TMOUT
上記の設定だと ssh ユーザ以外もログアウトさせてしまいます。
sshでログインしているユーザだけをログアウトする場合には、sshのコネクションがあるかどうかを判断して、TMOUTを設定します。
if [ -n "$SSH_CONNECTION" ]; then export TMOUT=300; fi
リードオンリーにするのであれば、以下の通りです。
if [ -n "$SSH_CONNECTION" ]; then TMOUT=300 readonly TMOUT export TMOUT fi
使い方
実際には、このような形になります。
$ ssh test@10.0.0.2 Last login: Wed Feb 25 23:38:57 2015 from 10.0.0.3 test@ubuntu:~$ timed out waiting for input: auto-logout Connection to 10.0.0.2 closed.
自動ログアウトできないケース
プログラムを実行して、それが実行中の場合、一切入力がなくても、ログアウトしません。vimを起動していたら、bashは、終わりません。
$ ssh test@host1 $ vim
ただし、tmuxやGNU Screen のようなターミナルマルチプレクサを起動した場合、入力がないとターミナルマルチプレクサとシェルの両方が終了してしまいます。screenの上で、topなどのコマンドを動かしていれば、切断されません。
host1 で TMOUT が設定されいても、host2 で設定されていなければ、sshは、継続します。
host0$ ssh test@host1 host1$ ssh test@host2 host2$
その他のシェル
csh/tcsh
.cshrc に autologout を設定します。
sh
.profile に TIMEOUT を設定します。
ksh
.profile に TMOUT を設定します。
sshdの設定でログアウトさせる
/etc/ssh/sshd_configの設定で、アイドルなセッションをログアウトさせることもできます。
ClientAliveInterval 3600 ClientAliveCountMax 0
sshdに設定を反映するには、reloadします。
sudo service sshd reload