sshdデーモンを停止したい状況があります。これを行うと、現在開いている接続も停止したいと思います。デフォルトでは、sshdサービスが停止しても既存の接続は終了しません。
これは設定可能ですか? sshdが停止するたびに開いている接続も停止するように設定できますか?
代替は何ですか?単にkillall sshd
?
ベストアンサー1
実際、sshdサービスは終了時にアクティブセッションを閉じません。
sshd を使用すると、killall sshd
独自の sshd サーバーも終了します。リモートステーションで作業するのは危険ですが、サーバーが停止しても大きな問題ではありません。
これを防ぐために、まずクライアントにバインドされているsshdインスタンスのPIDを見つけます。
# who am i
root pts/0 2019-10-25 13:52 (1.2.3.4)
# ps fxww|grep pts/
12144 ? Ss 0:00 \_ sshd: root@pts/0
12150 pts/0 Ss 0:00 | \_ -bash
12205 pts/0 R+ 0:00 | \_ ps fxww
12206 pts/0 S+ 0:00 | \_ grep pts/
12169 ? Ss 0:00 \_ sshd: root@pts/1
12175 pts/1 Ss+ 0:00 \_ -bash
これで、既存のセッションを終了または12144
閉じることができることがわかりました。12169
私のセッションが追加されることを考慮すると、殺すのをpts/0
避けることができます12144
。
これを自動化するには:
exclude=`who am i | awk '{print $2}'`
ps axww | grep -v "$exclude" \
| awk '/sshd: [^ ]*@pts/{print $1}' \
| while read pid;
do
kill $pid
done