我的Linux(UbuntuEEE)到Linux(CentOS)ssh在使用私有接口时需要很长时间才能login(〜15秒),但在使用公共接口时不需要。
我有一个Linux机器充当我的路由器。 因此,它有多个接口(75.xxx.xxx.xxx,192.168.1.1)。 我可以从内部接口(192.168.1.65到.1)ssh进入,但这将需要一段时间。 我可以ssh进入公共广播,它很快(〜1秒)。
我有另一个箱子,我可以ssh进入内部界面,它很快。
iptables被设置为接受立即进入接口的数据包。 sshd的UseDNS通常是打开的; 如果将其closures并重新启动sshd,我会遇到同样的问题。 我通常使用公钥authentication; 我已经做了一个mv ~/.ssh/ ~/ssh/
并且在慢慢地问我一个密码。
login后(使用任一界面),速度很快。
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
UseDNS no
在/ etc / ssh / sshd_config中设置并重新启动守护进程,这应该可以做到。
这种问题总是由DNS造成的。 当您login到192.168.1.1接口时,sshd将尝试查找您来自哪个IP地址,而不能。
如果您认为UseDNS已设置为“否”,请再次运行此实验。
我的猜测是,在将UseDNS更改为no后,您将SIGHUP发送给了错误的sshd。
在/etc/ssh/sshd_config
中反向映射,试图对你的内部IP地址进行rDNS查询。
“VerifyReverseMapping否”
在客户端和服务器上使用strace -p来确定ssh / sshd进程正在等待什么。
不知道可能是什么 – 延迟通常是由DNS反向查找造成的,但是您表示已经将其closures。
strace是Dave提到的一个选项,但是我会尝试在login时启用客户端的详细程度。您可以通过提供-v开关(最多可达3次)来完成此操作,例如:
ssh -vv [email protected]
在Alex的推荐下,我运行了一个数据包嗅探器,发现客户端正在做DNS查询。 作为testing的短期解决scheme,我在客户端的/etc/hosts
文件中添加了192.168.1.1 servername
,事情进展迅速。