停止 sshd 并终止正在进行的连接

停止 sshd 并终止正在进行的连接

在某些情况下,我希望停止 sshd 守护进程。当我这样做时,我希望当前打开的连接也被停止。默认情况下,sshd 服务停止时不会终止现有连接。

这是可配置的吗?我可以设置 sshd 以便每当它停止时,打开的连接也会停止吗?

有哪些替代方案?简单地killall sshd

答案1

事实上,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

现在我知道我可以终止1214412169关闭现有会话。考虑到我的会话是附加的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

相关内容