在我家外面,每当我使用 SSH 登录到我的 Ubuntu 服务器时,我需要大约 6 秒才能得到密码提示,但是当我登录到我的虚拟主机服务器时,大约需要 1 秒。我能做些什么来加快速度?
$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=8.04
DISTRIB_CODENAME=hardy
DISTRIB_DESCRIPTION="Ubuntu 8.04.1"
$ ssh -v
OpenSSH_4.7p1 Debian-8ubuntu1.2, OpenSSL 0.9.8g 19 Oct 2007
$ cat /proc/cpuinfo
model name : Dual-Core AMD Opteron(tm) Processor 1210
cpu MHz : 1000.000
cache size : 1024 KB
$ cat /proc/meminfo
MemTotal: 2074528 kB
我看到的第一个原因是 SSHD 中的配置选项,
UseDNS
此选项(默认启用)会导致服务器对传入请求执行 DNS 解析。一个耗时的操作。我已经看到登录从一分钟加上等待密码提示到几秒钟。如果您/etc/ssh/sshd_config
在服务器上进行编辑并在底部添加(如果不存在)UseDNS no
然后重新启动 SSH 守护程序,service ssh restart
您应该会在下次连接时看到改进。对我来说,长 SSH 会话登录的原因号 2(在服务器端 UseDNS 选项之后)是客户端尝试使用 IPv6 进行连接(显然,在我的网络或几乎任何其他网络上没有正确设置,对于这个问题)。
请参阅HOWTO:加速Ubuntu 论坛上的 SSH 登录。
“解决方案”是仅启用 IPv4:
1) 对于给定的 SSH 客户端调用:
2) 或全局在 ssh 客户端配置中
/etc/ssh/ssh_config
:当然,在您的网络上正确设置 IPv6 会更正确,但是谁有时间呢 :)
尝试使用 ssh 命令添加下一个选项:
(这可以防止 ssh 协商任何其他身份验证方法,并加快密码提示!)
此外,在远程机器上输入这个(作为您登录的用户)来禁止任何 MOTD 消息:
与关闭没有太大区别,
UseDNS
但它可能有助于较慢的连接。当您使用的是相当旧的 Ubuntu 版本时,很可能是这个错误:https ://bugs.launchpad.net/ubuntu/+source/openssh/+bug/300151
重新启动 dbus (
/etc/init.d/dbus restart
) 可能会有所帮助。