ssh'到公共服务器时延迟获得密码提示


9

我在大学中使用公共IP设置了服务器(Debian 7)。当我从校园外进入系统时,在收到密码提示之前,我会得到5到10秒的奇怪延迟。这是为什么?

我跑去ssh -v得到详细的输出:

debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received

.... delay of 5-10 seconds here

debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: publickey
debug1: Trying private key: /home/nass/.ssh/id_rsa
debug1: Trying private key: /home/nass/.ssh/id_dsa
debug1: Trying private key: /home/nass/.ssh/id_ecdsa
debug1: Next authentication method: password

然后我会得到密码提示。

我的resolv.conf样子

domain <mydomain>.edu
nameserver <dns ip address>

防火墙由所控制webmin,并且配置/etc/webmin/firewall/iptables.save如下所示:

# Generated by iptables-save v1.4.14 on Mon Feb 10 17:41:38 2014
*filter
:FORWARD DROP [0:0]
:IP_TCP - [0:0]
:INPUT DROP [0:0]
:IP_UDP - [0:0]
:OUTPUT ACCEPT [0:0]
:IP_ICMP - [0:0]
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state ESTABLISHED -j ACCEPT
-A INPUT -m state --state RELATED -j ACCEPT
-A INPUT -p tcp -m tcp --tcp-flags ACK ACK -j ACCEPT
-A INPUT -s 127.0.0.1/32 -i eth0 -j DROP
-A INPUT -p icmp -i eth0 -j IP_ICMP
-A INPUT -p udp -m udp -i eth0 -j IP_UDP
-A INPUT -p tcp -m tcp -i eth0 -j IP_TCP
-A INPUT -m limit --limit 3/second --limit-burst 3 -j ULOG --ulog-prefix "FW_INPUT: " --ulog-nlgroup 1
-A IP_ICMP -p icmp -m icmp --icmp-type 0 -j ACCEPT
-A IP_ICMP -p icmp -m icmp --icmp-type 3 -j ACCEPT
-A IP_ICMP -p icmp -m icmp --icmp-type 4 -j ACCEPT
-A IP_ICMP -p icmp -m icmp --icmp-type 11 -j ACCEPT
-A IP_ICMP -p icmp -m icmp --icmp-type 12 -j ACCEPT
-A IP_ICMP -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A IP_ICMP -p icmp -j RETURN
-A IP_TCP -p tcp -m tcp --dport 2049:2050 -j DROP
-A IP_TCP -p tcp -m tcp --dport 6000:6063 -j DROP
-A IP_TCP -p tcp -m tcp --dport 7000:7010 -j DROP
-A IP_TCP -p tcp -m tcp --dport 19001 -j ACCEPT
-A IP_TCP -p tcp -m tcp --dport 12321 -j ACCEPT
-A IP_TCP -p tcp -m tcp --dport 80 -j ACCEPT
-A IP_TCP -p tcp -m tcp --dport 443 -j ACCEPT
-A IP_TCP -p tcp -m tcp -j RETURN
COMMIT
# Completed on Mon Feb 10 17:41:38 2014
# Generated by iptables-save v1.4.14 on Mon Feb 10 17:41:38 2014
*mangle
:PREROUTING ACCEPT [2386474:238877913]
:INPUT ACCEPT [2251067:225473866]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [1100410:5416839301]
:POSTROUTING ACCEPT [1100428:5416842284]
COMMIT
# Completed on Mon Feb 10 17:41:38 2014
# Generated by iptables-save v1.4.14 on Mon Feb 10 17:41:38 2014
*nat
:PREROUTING ACCEPT [211832:26633302]
:INPUT ACCEPT [444:26827]
:OUTPUT ACCEPT [1817:114098]
:POSTROUTING ACCEPT [1817:114098]
COMMIT
# Completed on Mon Feb 10 17:41:38 2014

最后但同样重要的是,在同一系统上也有帐户的同事会立即收到提示!


1
首先想到的是服务器已UseDNS yes启用。众所周知,这会减慢登录速度。除此之外,我们还需要查看服务器的调试日志($(which sshd) -d)。
帕特里克

@Patrick,似乎有一个很好的理由。但是为什么我的登录速度慢而不是我的同事登录慢呢?
nas 2014年

您为什么认为它存在是有充分理由的?完全有可能存在,因为没人想过将其关闭。这可能会减慢您的速度,因为您的网络块的权威DNS服务器已死或丢失。
帕特里克

@Patrick很好,是否出于安全目的不执行此检查?
nas 2014年

@Patrick顺便说一句,这解决了问题,所以您最好将其写为答案
nas 2014年

Answers:


12

如注释中所示,这很可能是由服务器上的UseDNS yes设置引起的sshd_config

UseDNS设置是为了这个问题的共同的罪魁祸首。基本上发生的是您的IP网络块有故障或缺少DNS服务器。因此,sshd尝试在您的IP地址上进行反向查找,并等待直到超时。其他人不会遇到延迟,因为他们为其Netblock配备了功能正常的DNS服务器。

出于这个原因,大多数人都会关闭此设置。是的,设置是为了安全起见,但几乎没有用

解决方案只是在中设置以下内容sshd_config

UseDNS no

1
只是一个注意事项:sshd_config在Debian 7中,配置文件中没有此子句。一个人必须键入它。
NASS
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.