SSHDを停止し、進行中の接続を終了します。

SSHDを停止し、進行中の接続を終了します。

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

おすすめ記事