为什么 ssh 的“密码”提示需要这么长时间才能出现?

为什么 ssh 的“密码”提示需要这么长时间才能出现?

当我尝试时ssh,密码提示需要很长时间(将近两分钟)才能出现。

为什么会发生这种情况?

答案1

有几种情况可能会出错。添加-vvv以使 ssh 打印其正在执行的操作的详细跟踪,并查看其暂停的位置。

问题可能出在客户端或服务器上。

服务器上的一个常见问题是,如果您从客户端进行连接,而反向 DNS 查找超时。(“反向 DNS 查找”是指从客户端计算机的 IP 地址返回主机名。它对安全性没有太大用处,只是对根据日志条目诊断入侵尝试有一点帮助,但默认配置无论如何都会这样做。)要关闭反向 DNS 查找,请添加UseDNS no/etc/ssh/sshd_config(您需要在服务器上拥有 root 权限;请记住之后重新启动 SSH 服务)。

另一件事可能会出错全局搜索应用程序编程接口身份验证超时。如果您不知道那是什么,您可能不依赖它;您可以通过GSSAPIAuthentication no/etc/ssh/ssh_config~/.ssh/config(在客户端)中添加行来关闭它。

答案2

对登录过程进行计时,看看需要多长时间:

[root@gislab00207 ~]# time ssh root@ISSLABNTL01
root@isslabntl01's password:
Last login: Fri Oct  4 07:55:03 2013 from 3.60.40.232

[root@ISSLABNTL01 ~]# exit
logout
Connection to ISSLABNTL01 closed.

real    0m45.192s
user    0m0.003s
sys     0m0.005s

You have new mail in /var/spool/mail/root
[root@gislab00207 ~]#

参见上文,登录大约需要 45 秒 -------- 非常慢

以 root 身份登录后,编辑 sshd_config 文件并更改 UseDNS 条目,如下所示。这里我使用 sed 而不是编辑文件。

[root@ISSLABNTL01 ~]# grep -i dns /etc/ssh/sshd_config
#UseDNS yes

[root@ISSLABNTL01 ~]# sed -i 's/#UseDNS yes/UseDNS no/g' /etc/ssh/sshd_config
[root@ISSLABNTL01 ~]# grep -i dns /etc/ssh/sshd_config
UseDNS no

[root@ISSLABNTL01 ~]# service sshd restart
Stopping sshd:                                             [  OK  ]
Starting sshd:                                             [  OK  ]
[root@ISSLABNTL01 ~]# exit

让我们对登录过程进行计时,看看它需要多长时间。

[root@gislab00207 ~]# time ssh root@ISSLABNTL01
root@isslabntl01's password:
Last login: Fri Oct  4 07:55:03 2013 from 3.60.40.232

[root@ISSLABNTL01 ~]# exit
logout

Connection to ISSLABNTL01 closed.

real    0m6.192s
user    0m0.003s
sys     0m0.005s

You have new mail in /var/spool/mail/root
[root@gislab00207 ~]#

现在看来,我输入密码花了 6 秒的时间。

答案3

这是 Ubuntu 安装时出现的错误。

要修复此问题,你必须更改此行/etc/nsswitch.conf

hosts:          files mdns4_minimal [NOTFOUND=return] dns mdns4

并将其更改为:

hosts:          files dns

答案4

在我的案例中,ssh 的调试输出在“连接”时停止了 30 秒。解决方案与我本地系统上的 DNS 设置有关。以前的网络配置在文件中留下了一个虚假的 DNS 服务器。/etc/resolv.conf用当前的 DNS 服务器替换它解决了这个问题。

相关内容