如果您必须等待很长时间才能看到 SSH 密码提示,则可能存在多种问题。要解决 SSH 登录缓慢的根本原因,您可以运行带有 -vvv 选项的 ssh 命令,该命令将向您显示 SSH 登录期间幕后发生的情况。
$ ssh -vvv user@<ssh-server>
以下是 SSH 登录延迟问题的可能解决方案。
禁用 GSSAPI 身份验证
一种可能的罪魁祸首(如上面的 SSH 客户端日志所示)是 GSSAPI 身份验证。在 SSH 登录过程中,SSH 客户端会经历一系列身份验证步骤,其中之一是 GSSAPI 身份验证,其中 SSH 服务器联系 GSSAPI 服务器以验证客户端身份验证。在 CentOS 等 Linux 发行版上,默认启用 GSSAPI 身份验证,GSS 失败可能会导致 SSH 会话启动出现较长的延迟。
要在 SSH 服务器上禁用 GSSAPI 身份验证,请在 /etc/ssh/sshd_config 中查找 GSSAPIAuthentication,然后对其进行编辑或添加如下行。
$ sudo vi /etc/ssh/sshd_config
GSSAPIAuthentication no
然后重新启动 SSH 服务器:
$ sudo systemctl restart ssh (Debian, Ubuntu)
$ sudo /etc/init.d/ssh restart (old Debian, Ubuntu)
$ sudo systemctl restart sshd (Fedora, CentOS or RHEL)
$ sudo service sshd restart (old CentOS or RHEL)
禁用反向 DNS 查找
SSH 登录缓慢的另一种可能是反向 DNS 查找。在 Ubuntu 等 Linux 发行版上,当 SSH 服务器收到客户端的登录请求时,出于安全原因,服务器会对客户端的 IP 地址执行反向 DNS 查找。如果反向 DNS 查找失败,查找超时将增加 SSH 登录延迟。
要在 SSH 服务器上禁用反向 DNS 查找,请按如下方式编辑 SSH 服务器配置。
$ sudo vi /etc/ssh/sshd_config
# add this line
UseDNS no
然后重新启动 SSH 服务器:
$ sudo systemctl restart ssh (Debian, Ubuntu)
$ sudo /etc/init.d/ssh restart (old Debian, Ubuntu)
$ sudo systemctl restart sshd (Fedora, CentOS or RHEL)
$ sudo service sshd restart (old CentOS or RHEL)