我正在尝试找到确切的选项或选项组合,这些选项或选项将强制每个 SSH 会话在指定时间内不活动时终止。我正在使用 Putty 通过 SSH 连接到 RHEL AS3 服务器;Putty 的 keepalive 设置为“关闭”(0),并且 ssh_config 和 sshd_config 文件中的 keepalive 被注释掉。
我在 Google 上搜索了不同的地方,并找到了一些有关 ServerFault 的信息,但我希望找到一个“具体”的解决方案。我尝试修改 /etc/ssh/sshd_config 文件,添加以下内容:
ClientAliveInterval 15 ClientAliveCountMax 1
(测试时设置为15秒)
然后重新启动SSH:
/sbin/service sshd 重启
但没有运气;会话从未超时(23 分钟后重新检查)。我还尝试修改“keepalive”内核参数:
% echo "60" > /proc/sys/net/ipv4/tcp_keepalive_time (默认为 7200)
% echo "1" > /proc/sys/net/ipv4/tcp_keepalive_probes (默认为 9)
% echo "5" > /proc/sys/net/ipv4/tcp_keepalive_intvl (默认为 75)
但会话仍然处于活动状态(8 分钟后重新检查)。如能帮助我解决我遗漏的难题,我将不胜感激。谢谢!
--- DT
答案1
我使用它export TMOUT=3600
在我的~/.bashrc 中 1 小时后关闭不活动的会话。
答案2
您设置的大部分内容都与 tcp 设置有关。您需要告诉 shell 将您注销。关于将 TMOUT=3600 设置为一小时的评论是我打分的。您可能希望将其放入全局配置文件中 ( /etc/profile
)
tcp keepalives 与发送数据包以保持 tcp 会话活动的频率有关。例如,如果一分钟内没有流量,并且 tcp keep alive 设置为 60 秒,那么将发送一个 keep alive 数据包来保持会话活动。这是对各种 tcp 变量的合理描述
答案3
我有 ClientAliveInterval 600 ClientAliveCountMax 0 并且它可以工作
答案4
我是 idled 的粉丝。是的,它是一个额外的用户空间守护进程,但它运行良好。
http://www.itworld.com/nls_unix_login2
源码包:http://sourceforge.net/projects/idled/files/idled/
(原始链接为:http://www.netsw.org/system/tools/process/但目前似乎处于关闭状态)