我在单位开了台实验用机,用SSH远程登录。之前一直用得不错,这两天发现断了。联系了两位相关的同事帮忙,分别对虚拟机和网络测试,都正常。我晚上回家再测,由于白天有了对比,晚上等待就更耐心一些--不到30秒,登录成功了。登录以后,速度还可以。
这说明网络、虚拟机都没啥问题。我以前遇到过SSH登录缓慢而登录以后速度不错的情况,比如我的WINDWOS机器连接LINUX用sftp的时候。后来解决了,这次的解决方案也大致如下。
解决方法:
修改 /etc/ssh/sshd_config,这是ssh服务端的设置文件。
1. UseDNS no
2. 把
GSSAPIAuthentication yes
改为
GSSAPIAuthentication no
然后重启sshd,/etc/init.d/sshd restart
再重新连接,登录速度快了。
导致以上问题的原因的基本原理是,ssh客户端在连接ssh服务端的时候,服务端根据客户端的IP地址去反向解析这个IP地址的域名。如果反向解析的过程中需要连接的外部世界的服务器速度很慢,或者干脆是不可达的,那么ssh服务端会等到DNS反向解析这个动作超时,这会导致十几秒或长时间ssh客户端傻等在那。没耐心如我者,就会判定网断了或者服务器完蛋了。
ssh服务端的这些动作可以禁止掉,不过开发者认为这些动作是必要的,安全中不应缺少的组成部分,所以默认设置了。这让我想起些别的。
Thunderbird,似乎译作 雷鸟(?)是非常著名的电子邮件客户端。似乎跟当年的foxmail一样著名,或者更著名。foxmail的作者后来加盟了腾讯,开发出了个著名产品,叫做微信。我用过一段时间Thunderbird,觉得还不错。后来,后来....这个故事告诉我们,时代并非总是越变越好的。
后来,我用thunderbird收gmail的邮件。之所以要这么干,是因为连接gmail的速度令人难以忍受。令人难以忍受的意思并非慢得不行,因为它有时也飞快,瞬间完成载入。令人难以忍受的原因是,速度并不稳定,抽疯一样,有时飞快,有时极慢。我慢慢养成了一个不良习惯,每次载入慢的时候,就开始在心里或者出声地骂相关责任人。
我以为用thunderbird收邮件,批量都收下来以后再看,感觉会好些。没有想到的是,或者说thunderbird的开发者也没有想到的事情发生了。软件工程中有所谓"你永远也不知道用户会多么愚蠢地使用你开发的软件",thunderbird开发组也绝对不能想到地球上还有我们这样一群用户的境遇吧。当我点击某封邮件,邮件头显示的是这封邮件的标题,但是邮件的正文仍然是刚刚读过的一封,直到几分钟以后,邮件的正文才刷新出来。如果没注意,会以为A标题正对应着B正文。Thunderbird开发组可能绝不能想到,这世界上有个地方收gmail邮件的时候慢到需要进度条指示,如果进度条有百分比更好。
sshd的开发组可能也不能想到,有些地方,虽非物理隔离的内网,但是许多地方亦不可达。饱食者不能理解何不食肉糜,那些优秀的软件产品的设计者可能也不能理解我们吧。就像微软的WORD和VS咔咔升级,越整工具栏和浮动工具栏越多,最后能编程和写文字的地方只剩下了一小点儿。当然,他们是有道理的,因为他们的目标用户是用大~~~显示器的。我当年用15英寸CRT球面显示器坚持了N多年,所以才养成了全屏编辑的习惯。当然,微软们还有另一个道理,就是我们中大多数人没有付钱,因此并非他们的目标用户。这与另一个案例类似。当年光荣公司宣布三国某版本游戏不再支持简体中文,我们中国不少用户义愤填膺,在BBS里一顿骂,骂光荣之愚蠢,竟然放弃大陆这么大的市场。几楼以后,有个网友悠悠地说:你们买过光荣用户哪怕一个拷贝吧,好意思说自己是用户是市场?
但是 thunderbird 和 sshd 不同,它们都是免费的,gmail也是免费的,整个地球都可以尽情拥有,而我们似乎不在其中。有个片子你看过没,叫做《日本锁国》。
--------------------
博客会手工同步到以下地址: