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

当我尝试ssh ,密码提示需要太长时间(差不多两分钟)才会出现。

为什么会这样?

有几件事可能会出错。 添加-vvv使ssh打印出它正在做的事情的详细描述,并查看它在哪里暂停。

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

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

另一件可能出错的事情是GSSAPI身份validation超时。 如果你不知道那是什么,你可能不会依赖它; 你可以通过在/etc/ssh/ssh_config~/.ssh/config (在客户端)上添加GSSAPIAuthentication no行来关闭它。

让时间登录过程,看看需要多长时间:

 [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秒钟,我输入密码的时间。

Ubuntu的安装出了问题。

要修复它,你必须在/etc/nsswitch.conf中更改这一行:

 hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4 

并为此更改它:

 hosts: files dns 

在我的情况下,可以通过重新启动systemd-logind来解决此问题:

 systemctl restart systemd-logind 

这在Serverfault上提到 。

我必须经常这样做,而且我不知道问题的根本原因是什么。

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

对我来说,将系统dns更改为127.0.0.1,之前这是一个不存在的主机。

 nano /etc/resolv.conf 

并写下以下内容

 domain localdomain search localdomain (Removed this line) ===> nameserver 10.0.0.1 (Added this line) ===> nameserver 127.0.0.1 

我不太了解海报的环境,但对于有类似问题的其他人来说,这可能是sssd一个问题,我们用它来搭配ldap mojo。

这发生在我身上:

 $ time ssh server.example.com real 2m0.018s user 0m0.006s sys 0m0.004s 

我必须访问服务器(在我的情况下通过控制台),然后执行:

 service restart sssd 

在那之后,事情才有效。 我没有时间调试根本原因,但这个bandaid对我有用。

我可以通过检查我的dlink路由器上的DHCP设置中的启用DNS中继通过ssh解决慢速密码问题。 之后与SSH的连接在一秒钟内完成。

 Network Settings -> Router Settings -> Enable DNS Relay [x] 

默认配置将每个DNS请求转发给提供程序。 虽然我用ssh pi@10.0.0.103连接,但速度很慢。 解决方案的提示是/etc/resolv.conf中的一个条目“search upc.at”,它是通过dhcp提供的。

dlink手册说明:

 When DNS Relay is enabled, DHCP clients of the router will be assigned the router's LAN IP address as their DNS server. All DNS requests that the router receives will be forwarded to your ISPs DNS servers. When DNS relay is disabled, all DHCP clients of the router will be assigned the ISP's DNS server. 

在客户端和服务器上发布dhcp后,通过SSH连接再次快速。 HTH。