配置SSH服务远程连接空闲超时退出时间(包括SSH无法登录、登录缓慢)

2025-12-09 00:45:14

战区救援

建议方案 设置SSH空闲超时退出时间,可降低未授权用户访问其他用户ssh会话的风险 加固建议 编辑/etc/ssh/sshd_config配置文件,将ClientAliveInterval设置...

建议方案 设置SSH空闲超时退出时间,可降低未授权用户访问其他用户ssh会话的风险

加固建议 编辑/etc/ssh/sshd_config配置文件,将ClientAliveInterval设置为300到900,即5-15分钟,将ClientAliveCountMax设置为0。

方法1: 1.修改server端的/etc/ssh/sshd_config配置文件

ClientAliveInterval 60 :server每隔60秒发送一次请求给client,然后client响应,从而保持连接。

ClientAliveCountMax 3 :server发出请求后,客户端没有响应的次数达到3次,就自动断开连接,正常情况下,client不会不响应。

代码语言:javascript复制[root@Jenkins ~]# vim /etc/ssh/sshd_config

......

112 ClientAliveInterval 60

113 ClientAliveCountMax 3

......

2.修改client端的/etc/ssh/ssh_config添加以下:(在没有权限修改server端的SSH配置的情况下)

ServerAliveInterval 60 :client每隔60秒发送一次请求给server,然后server响应,从而保持连接。

ServerAliveCountMax 3 :client发出请求后,服务器端没有响应的次数达到3次,就自动断开连接,正常情况下,server不会不响应。

代码语言:javascript复制[root@Nginx ~]# vim /etc/ssh/sshd_config

......

112 ClientAliveInterval 60

113 ClientAliveCountMax 3

......

3.重启sshd服务

代码语言:javascript复制systemctl restart sshd

方法2: 不修改配置文件,直接在SSH远程连接时命令加参数,即ssh -o ServerAliveinterval=60 root@'远程连接IP地址',这样就只会在当前需要的远程连接中保持持久的连接, 并不是所有的远程连接都需要保持持久连接的!

代码语言:javascript复制[root@Jenkins ~]# ssh -o ServerAliveinterval=60 root@192.168.1.33

Last login: Wed May 18 14:53:19 2022 from 192.168.1.30

[root@Web1 ~]# ifconfig ens33

ens33: flags=4163 mtu 1500

inet 192.168.1.33 netmask 255.255.255.0 broadcast 192.168.1.255

inet6 240e:39a:39b:cd10:20c:29ff:fec1:8e32 prefixlen 64 scopeid 0x0

inet6 fe80::20c:29ff:fec1:8e32 prefixlen 64 scopeid 0x20

ether 00:0c:29:c1:8e:32 txqueuelen 1000 (Ethernet)

RX packets 756 bytes 66547 (64.9 KiB)

RX errors 0 dropped 112 overruns 0 frame 0

TX packets 549 bytes 52204 (50.9 KiB)

TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0## 解决SSH登陆缓慢问题解决SSH登陆缓慢问题 1.编辑/etc/ssh/sshd_config配置文件,将UseDNS修改为no,最好是在尾部添加一行为:UseDNS no

2.关闭GSSAPI认证:GSSAPIAuthentication no,修改完成后记得重启ssh服务。

代码语言:javascript复制[root@Jenkins ~]# vim /etc/ssh/sshd_config

...

79 GSSAPIAuthentication yes

...

115 #UseDNS yes

...

解决SSH无法登陆问题 一般情况下当ssh服务远程连接不上时,后台登陆服务器,先确认服务器网络有无问题,查一下ssh服务有没有正常运行,防火墙是否放行了ssh端口,检查sshd_config文件配置(注意端口号、是否有地址绑定、是否允许root登陆等);如果都没问题,再检查下/etc/hosts.deny 和 /etc/hosts.allow两个配置文件是否有限制登陆。

/etc/hosts.allow和/etc/hosts.deny两个配置文件:

有时候服务器上会用这两个文件限制登陆的IP,通常是在/etc/hosts.deny文件中里面先deny all,然后在/etc/hosts.allow文件中添加需要登陆的IP地址;例如:

先禁止所有:

代码语言:javascript复制[root@Jenkins ~]# cat /etc/hosts.deny

sshd: ALL : deny

再放行允许连接访问的IP地址:

代码语言:javascript复制[root@Jenkins ~]# cat /etc/hosts.allow

sshd:10.10.10.* : allow 允许10.10.10.0/24网段登陆

sshd: 192.168.1.30 : allow 允许192.168.1.30这个ip登陆