sshd 似乎总是尝试对新连接执行反向 DNS 查找。对于没有 PTR 条目的主机,这会导致每个查询延迟 5 秒。有时它会立即接受连接,有时它会尝试解析一次,有时会尝试两次。我tcpdump port 53
在尝试连接到服务器时观察到了这种情况。我真的不知道为什么它有时会尝试查找两次。
这似乎是一个相当常见的问题,标准响应位于UseDNS no
/etc/ssh/sshd_config 中。但是,我已经设置了此选项,而 sshd 仍在尝试执行这些反向查找。
我找到了另一个建议这里我尝试将 -u0 添加到 /etc/default/ssh,但似乎没有任何改变。
我目前没有主意了,欢迎任何建议。
答案1
目前最常见的罪魁祸首是 GSSAPI:
/etc/ssh/sshd_config:
GSSAPIAuthentication no
其他三个针对 Linux 平台的罪魁祸首已在其他答案中提及:
- 添加到
sshd
命令行选项-u0
- 放
UseDNS no
- 不要使用
from=hostname
内部authorized_keys
文件
答案2
使用 DNS = no 不会阻止 sshd 执行 DNS 查找,但它会阻止它在 PTR 记录不匹配时拒绝客户端。
-u0 阻止 sshd 在 utmp 结构中记录 DNS 名称。
查找可能仍会发生,具体取决于用户在其authorized_keys中拥有的内容。
请参阅此以获得更合理的解释:
http://lists.freebsd.org/pipermail/freebsd-stable/2006-November/030886.html
答案3
修改 /etc/ssh/sshd_config 中的端口 22、UseDNS yes、UsePAM no、UseLogin no,
并执行: service sshd restart
答案4
就我而言,问题出在 hosts.allow 和/或 hosts.deny 文件中的条目导致它执行 DNS 查找。根据文档,配置文件中的 Allow 和 Deny 指令也可能发生同样的情况。