一定期間操作のないbashを自動的にログアウトする方法

提供: セキュリティ
移動: 案内検索
スポンサーリンク

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

関連項目




スポンサーリンク