在连接到SSH服务时,有时需要等待很长时间,直到控制台可用以执行命令。延迟的原因有很多,本指南将讨论一些常见的原因及其解决方案。
这些解决方案通常相互独立,因此最好逐一进行调整并检查每个解决方案的效果,这样更容易找出实际原因。
提供的命令适用于Debian/Ubuntu,对于CentOS/Alma/Rocky,命令可能会有所不同。例如,服务名称可能不是“ssh”,而是“sshd” —— 执行时请注意这一点。除此之外,其他部分是相同的。
1. 最常见的原因:等待DNS服务器
打开SSH服务的配置文件:
nano /etc/ssh/sshd_config
禁用UseDNS选项,这样就不会尝试获取IP的反向DNS记录(PTR):
UseDNS no
修改后,重启服务:
service ssh restart
2. 未指定连接超时
打开SSH服务的配置文件:
nano /etc/ssh/sshd_config
将该参数设置为:
LoginGraceTime 10s
修改后,重启服务:
service ssh restart
3. 延迟长时间与systemd-logind服务有关
在这种情况下,auth.log日志通常包含如下事件:
pam_systemd(sshd:session): Failed to create session: Connection timed out
检查服务状态:
systemctl status systemd-logind
如有必要,使用restart命令重启该服务。
如果延迟依旧,使用vi或nano打开文件:
/etc/pam.d/common-session
将该行注释掉,前面加上#符号:
#session optional pam_systemd.so
然后,重启该服务:
systemctl restart systemd-logind
再次尝试,但请记住,使用这种设置时,控制台可能无法完全正常工作,因此该选项应视为临时解决方案。
暂时没有评论