使用 ssh 连接到 Debian 服务器时,如果我使用 user@XXX.XXX.XXX.XXX(服务器的 IP 地址),则连接是即时的。
但是,如果我使用 user@hostname.com(重定向到服务器 IP 地址的 DNS),则 ssh 连接会在成功连接之前挂起 20 秒。ssh 日志显示以下内容:
[alex@alex home]$ ssh -v -v git@hotname.com
OpenSSH_5.5p1, OpenSSL 1.0.0c-fips 2 Dec 2010
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Applying options for *
debug2: ssh_connect: needpriv 0
Run Code Online (Sandbox Code Playgroud)
在这里它在继续之前挂起 20 秒。
我认为这可能与反向 DNS 或类似内容有关(服务器并不真正“知道”它的名称是 hostname.com,它只是将该 DNS 重定向到其 IP 地址)。
我在 /etc/ssh/sshd_config 中添加了以下选项:
UseDNS no
GSSAPIAuthentication no
Run Code Online (Sandbox Code Playgroud)
没有效果。
/etc/resolv.conf 中服务器的 DNS 记录配置正确:
ping hostname.com
PING sub.domain.com (X.X.X.X) 56(84) bytes of data.
64 bytes from replicant (X.X.X.X): icmp_seq=1 ttl=64 time=0.029 ms
64 bytes from replicant (X.X.X.X): icmp_seq=2 ttl=64 time=0.050 ms?s
Run Code Online (Sandbox Code Playgroud)
谢谢您的帮助。
解决方案: 看来我的 ISP 给我的 DSL 路由器造成了问题。
将我的 DNS 服务器从 192.168.1.1(路由器的 IP)更改为 google 的(8.8.8.8,在您匆忙时总是很高兴)立即解决了连接延迟问题。
我猜测提供的 50 欧元路由器不会缓存 DNS 条目,尽管我不明白为什么 ping DNS 地址没有延迟,而且 20 秒的等待时间太长,即使对于未缓存的 DNS。
再次寻求帮助!
你需要添加
GSSAPIAuthentication no
Run Code Online (Sandbox Code Playgroud)
……/etc/ssh/ssh_config不是像你说的那样。 /etc/ssh/sshd_config要检查这是否确实解决了问题,请尝试添加-o GSSAPIAuthentication=no到命令行中,看看是否会发生变化。