ssh 连接到错误的服务器

ssh 连接到错误的服务器

我在 DNS 中更改了 ubuntu 服务器的 IP 地址

 10.x.x.111

10.x.x.222

我已经刷新了 dns 缓存,但是当我尝试 ssh 进入机器时,ssh 仍然尝试连接到旧 IP。

host foo.example.com
10.10.10.222    <= 222 is the correct *new* ip address



ssh -vv -F /dev/null -o UserKnownHostsFile=/dev/null  foo.example.com
OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011
debug1: Reading configuration data /dev/null
debug2: ssh_connect: needpriv 0
debug1: Connecting to foo.example.com [10.x.x.111] port 22.   <= 111 is the incorrect *old* address

我已验证旧 IP 不存在于/etc/hosts ~/.ssh/known_hosts也不存在~/.ssh/config

为什么 ssh 找到错误的 IP 地址?

更新

经过一夜的等待,今天早上 ssh 似乎已经连接到了正确的 IP 地址。

既然没有答案,我就解释一下这个问题。它们解析 dns 名称的方式有何ssh不同?host

更新2

我又重现了这个。host显示正确的ip,pingssh显示旧的ip。

这是 ping 的 strace 输出 http://pastebin.com/ifnrqDP6

答案1

原因是在 OSX 上,有多个缓存需要刷新。由于我的工作站是 Mac,运行 yosemite,因此我运行了以下命令

sudo discoveryutil mdnsflushcache

https://support.apple.com/en-us/HT202516

事实证明我还需要刷新 udns 缓存

 sudo discoveryutil udnsflushcaches

相关内容