你要说服务器上最让人闹心的小毛病,SSH登录慢绝对排得上号。每次连服务器,输完密码要等好几秒甚至十几秒才进系统;或者一开始连接就转半天圈。一次两次还能忍,天天这么搞,脾气都磨没了。而且这毛病奇怪得很,有时候换台机器连就快了,有时候同一个机器时快时慢。今天就把SSH慢的常见原因和解决办法给你捋一遍,多数情况几分钟就能搞定。

头号元凶:DNS反查
SSH登录慢,十有八九是DNS反查在拖后腿。啥意思?就是服务器收到你的连接请求后,想查一下你那个IP对应的域名是啥,结果DNS解析超时或者压根解析不出来,它就得傻等一会儿才放弃。解决办法特简单:改SSH配置文件,把UseDNS改成no,再重启sshd。改完之后你会发现,登录速度立竿见影,从等好几秒变成秒进。
具体操作:编辑/etc/ssh/sshd_config,找到UseDNS那一行改成UseDNS no(没有就自己加一行),然后systemctl restart sshd。就这么简单,八成以上的SSH慢都能用这一招解决,先试这个准没错。
第二个常见原因:GSSAPI认证
如果你是连一些默认开启了GSSAPI认证的系统,登录的时候服务器会尝试做Kerberos认证,这个认证在没配Kerberos的环境里就是白等一场,纯浪费时间。解决也简单:还是在sshd_config里,把GSSAPIAuthentication改成no,重启sshd。这招跟UseDNS经常要搭配着用,两个都关了,登录速度能提升一大截。
客户端这边也能做点啥
服务器改完了,客户端这边也有优化空间。如果你用ssh命令连服务器,可以在客户端的配置里加上连接复用,就是ControlMaster那些参数,第一次连接之后,后面的连接直接复用通道,不用重新握手,速度飞快。用Xshell、FinalShell这些图形工具的话,把会话的连接超时调短一点,别让它傻等。另外,连的时候直接指定IP别老用域名,能省一次域名解析的时间,虽然不多,积少成多嘛。
排除法:确认不是网络本身慢
改了配置还慢,那就得排除网络问题了。拿你本地ping一下服务器,看延迟高不高;或者用其他机器连一下试试,如果别的机器秒连就你这台慢,那多半是你本地网络或者软件的问题。如果所有机器都慢,那可能是服务器本身负载高、带宽被占满,或者线路高峰期拥塞,这种情况就不是SSH配置能解决的了,得从网络和服务器资源入手排查。
还有一种慢:输密码前就卡住
有人的慢是输完密码才卡,还有人的慢是还没输密码,连接那一瞬间就卡半天。这种一般是服务器在等客户端的版本协商或者密钥交换,最常见的原因还是网络丢包严重,或者服务器上装了安全软件在做连接检查。可以先试试用-v参数连接,ssh -v IP,看它卡在哪一步,输出会告诉你连接过程的每一步进展,卡在哪儿一目了然。排查SSH问题,-v参数是你的好帮手,别嫌它啰嗦。
顺带说个安全相关的提醒
排查SSH慢的时候,顺便确认一下SSH配置的安全性,一举两得:密码登录能关就关,用密钥登录又安全又快,还省得每次输密码;默认端口22如果一直被扫描爆破,可以考虑换个端口,或者用防火墙限制来源IP。这些配置跟UseDNS都在同一个文件里改,改的时候一起弄了,省得改两次重启两次。改完记得用新开一个会话验证能登录,再关旧会话,别把自己锁在门外。
总结一下:SSH慢先改UseDNS no,再改GSSAPIAuthentication no,这两招能解决九成问题;剩下的从网络和客户端找原因。几分钟的配置改动,换来天天舒心的登录体验,这笔买卖怎么看都划算。顺手把这几招试完,SSH慢基本就跟你彻底告别了,天天连服务器的心情都能好不少。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!