sshd 连接挂起

sshd 连接挂起

我们的 Linux 服务器有大约 50 个“僵尸” ssh 连接……我现在无法重新启动机器,而且我真的不想通过 PID 杀死每一个连接。我也不确定 killall 是否会杀死实际服务并阻止我重新登录。有没有简单的方法可以杀死它们?我应该在哪里设置超时以防止将来发生这种情况?

谢谢...

答案1

我可能会编写一个快速脚本并用 运行它nohup。如果没有 nohup,连接丢失会导致脚本因退出时 bash 的 SIGHUP 而停止运行。 nohup将使脚本不受 sighup 的影响。

#!/bin/bash
killall sshd
/etc/rc.d/init.d/sshd start

为了更加安全,如果您无法在本地可以访问的系统上测试脚本,我将启用其他连接方式。

另一种方法是解析 pid。例如..

ps ax | grep ssh | awk '{print $1}' > /tmp/pids

然后,查看w以确定您的 shell 正在使用哪个 tty。查找正在运行的实例w。确定后,运行ps aufx以找出哪个 sshd 实例分配给您标识的 tty。然后从 /tmp/pids 中删除该 pid。之后,处理脚本以添加 kill。

sed -i 's/^/kill /g' /tmp/pids

然后,执行它..

sh /tmp/pids

对于 5 分钟后超时空闲 SSH 连接,您可以在 sshd_config 中指定以下内容:

ClientAliveInterval 600
ClientAliveCountMax 0

或者,你可以使用设置TMOUT变量。如果 sshd 丢失了它的 shell,它就会终止。/etc/profilebash

相关内容