当我尝试时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 服务器替换它解决了这个问题。