我发现 SSH 登录时出现延迟。具体来说,有 2 个地方出现从瞬间到数秒的延迟。
- 在发出 ssh 命令并获取登录提示之间
- 在输入密码和加载 shell 之间
现在,我在这里只查看 ssh 详细信息。显然,网络延迟、硬件和操作系统的速度、复杂的登录脚本等都可能导致延迟。为了便于理解,我使用 ssh 连接到大量 Linux 发行版和一些 Solaris 主机,其中主要使用 Ubuntu、CentOS 和 MacOS X 作为我的客户端系统。几乎所有时间,ssh 服务器配置都与操作系统的默认设置保持一致。
我应该对哪些 ssh 服务器配置感兴趣?是否有可以调整的 OS/内核参数?登录 shell 技巧?等等?
答案1
尝试设置UseDNS
为no
或/etc/sshd_config
。/etc/ssh/sshd_config
答案2
当我ssh -vvv
在性能类似缓慢的服务器上运行时,我看到这里挂起了:
debug1: Next authentication method: gssapi-with-mic
通过编辑/etc/ssh/ssh_config
和注释掉该身份验证方法,我让登录性能恢复正常。以下是我在/etc/ssh/ssh_config
服务器上的内容:
GSSAPIAuthentication no
您可以在服务器上全局设置此项,这样它就不会接受 GSSAPI 进行身份验证。只需在服务器上添加GSSAPIAuthentication no
并/etc/ssh/sshd_config
重新启动服务即可。
答案3
对我来说,罪魁祸首是 IPv6 解析,它超时了。(我猜是我的主机提供商的 DNS 设置不正确。)我通过执行 发现了这一点ssh -v
,它显示了哪个步骤挂起了。
解决方案是ssh
使用以下-4
选项:
ssh -4 [email protected]
答案4
您始终可以ssh
从-v
显示当前正在执行的操作的选项开始。
$ ssh -v you@host
根据您提供的信息,我只能建议一些客户端配置:
由于您写道您正在手动输入密码,因此我建议您尽可能使用公钥认证。这样可以消除速度瓶颈。
您还可以使用 禁用 X-forwarding
-x
和身份验证转发-a
(这些可能已默认禁用)。特别是如果您的客户端需要为命令启动 X-serverssh
(例如在 OS X 下),禁用 X-forwarding 可以大大提高速度。
其他一切实际上取决于您在何时何地遇到了什么样的延误。