在某些情况下,我希望停止 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
现在我知道我可以终止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