我的 Linux(UbuntuEEE)到 Linux(CentOS)ssh 使用私有接口时需要很长时间才能登录(约 15 秒),但使用公共接口时则不需要。
我有一台 Linux 机器作为路由器。因此,它有多个接口(75.xxx.xxx.xxx、192.168.1.1)。我可以从内部接口(192.168.1.65 到 .1)通过 ssh 连接,但需要一段时间。我可以 ssh 进入公共地址,而且速度很快(约 1 秒)。
我有另一个盒子,我可以通过 ssh 进入内部接口,而且速度很快。
iptables 设置为立即接受进入接口的数据包。sshd 的 UseDNS 通常处于打开状态;如果我将其关闭并重新启动 sshd,我也会遇到同样的问题。我通常使用公钥身份验证;我做过一次,mv ~/.ssh/ ~/ssh/
它会在缓慢运行后要求我输入密码。
登录后(使用任一界面)速度都很快。
ssh 客户端版本(通过ssh -v
):OpenSSH_4.7p1 Debian-8ubuntu1.2,OpenSSL 0.9.8g 2007 年 10 月 19 日
ssh 服务器版本(通过rpm -qv openssh_server
):openssh-server-4.3p2-29.el5
答案1
UseDNS no
在您的 /etc/ssh/sshd_config 中进行设置并重新启动守护进程,这样就可以了。
答案2
这种问题是总是由 DNS 引起。当您登录 192.168.1.1 接口时,sshd 会尝试查找您来自的任何 IP 地址,但无法找到。
- 通过启动到路由器的 ssh 会话来验证我的说法。
- 在外部接口上启动 tcpdump,进行过滤,以便看到往返于端口 53 的所有数据包。
- 通过 SSH 进入路由器的内部接口。tcpdump 将显示离开路由器的 DNS 查询,询问 192.168.1/24 源地址的主机名。
当您认为 UseDNS 已设置为“否”时,请再次运行此实验。
我猜测是您将 UseDNS 更改为 no 后向错误的 sshd 发送了 SIGHUP。
答案3
反过来/etc/ssh/sshd_config
,反向映射会尝试对您的内部 IP 地址进行 rDNS 查找。
“VerifyReverseMapping 否”
答案4
正如 Dave 提到的,strace 是一个选项,但我会尝试在登录时在客户端上启用详细程度。您可以通过提供 -v 开关(最多 3 次以获得最大详细程度)来执行此操作,例如:
ssh -vv [email protected]