「一定期間操作のないbashを自動的にログアウトする方法」の版間の差分
(同じ利用者による、間の4版が非表示) | |||
行22: | 行22: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | 上記の設定だと ssh ユーザ以外もログアウトさせてしまいます。 | + | 上記の設定だと [[ssh]] ユーザ以外もログアウトさせてしまいます。 |
− | [[ssh]] | + | [[ssh]]でログインしているユーザだけをログアウトする場合には、sshのコネクションがあるかどうかを判断して、TMOUTを設定します。 |
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
− | if [ -n "$SSH_CONNECTION" ]; then export TMOUT=300; fi | + | if [ -n "$SSH_CONNECTION" ]; then |
+ | export TMOUT=300; | ||
+ | fi | ||
</syntaxhighlight> | </syntaxhighlight> | ||
+ | |||
+ | リードオンリーにするのであれば、以下の通りです。 | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | if [ -n "$SSH_CONNECTION" ]; then | ||
+ | TMOUT=300 | ||
+ | readonly TMOUT | ||
+ | export TMOUT | ||
+ | fi | ||
+ | </syntaxhighlight> | ||
+ | |||
== 使い方 == | == 使い方 == | ||
実際には、このような形になります。 | 実際には、このような形になります。 | ||
行42: | 行54: | ||
$ vim | $ vim | ||
</syntaxhighlight> | </syntaxhighlight> | ||
+ | ただし、tmuxやGNU Screen のようなターミナルマルチプレクサを起動した場合、入力がないとターミナルマルチプレクサとシェルの両方が終了してしまいます。screenの上で、topなどのコマンドを動かしていれば、切断されません。 | ||
host1 で TMOUT が設定されいても、host2 で設定されていなければ、[[ssh]]は、継続します。 | host1 で TMOUT が設定されいても、host2 で設定されていなければ、[[ssh]]は、継続します。 | ||
行49: | 行62: | ||
host2$ | host2$ | ||
</syntaxhighlight> | </syntaxhighlight> | ||
+ | == その他のシェル == | ||
+ | === csh/tcsh === | ||
+ | .cshrc に autologout を設定します。 | ||
+ | === sh === | ||
+ | .profile に TIMEOUT を設定します。 | ||
+ | === ksh === | ||
+ | .profile に TMOUT を設定します。 | ||
== sshdの設定でログアウトさせる == | == sshdの設定でログアウトさせる == | ||
/etc/ssh/[[sshd_config]]の設定で、アイドルなセッションをログアウトさせることもできます。 | /etc/ssh/[[sshd_config]]の設定で、アイドルなセッションをログアウトさせることもできます。 | ||
行61: | 行81: | ||
== 関連項目 == | == 関連項目 == | ||
* [[ssh接続が自動切断される場合の回避方法]] | * [[ssh接続が自動切断される場合の回避方法]] | ||
+ | * [[一定期間操作のないssh接続を切断する方法]] | ||
* [[Secure Shell]] | * [[Secure Shell]] | ||
* [[bash]] | * [[bash]] | ||
<!-- vim: filetype=mediawiki | <!-- vim: filetype=mediawiki | ||
--> | --> |
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