![OS X 上奇怪的 NS 行为 — 无法连接到 SSH 服务器](https://linux22.com/image/1287227/OS%20X%20%E4%B8%8A%E5%A5%87%E6%80%AA%E7%9A%84%20NS%20%E8%A1%8C%E4%B8%BA%20%E2%80%94%20%E6%97%A0%E6%B3%95%E8%BF%9E%E6%8E%A5%E5%88%B0%20SSH%20%E6%9C%8D%E5%8A%A1%E5%99%A8.png)
我正在尝试通过 SSH 连接到运行 Debian 的 Eee PC 笔记本电脑,该网络上的主机名通过 DHCP 服务器自动向 DNS 注册。Eee PC 笔记本电脑电量耗尽并进入睡眠状态,现在再次启动时,Mac 无法识别它,只能看到程序nslookup
。
gaz:~ jeff$ ssh epc
ssh: Could not resolve hostname epc: nodename nor servname provided, or not known
gaz:~ jeff$ nslookup epc
Server: 192.168.2.20
Address: 192.168.2.20#53
Name: epc.osnetwork
Address: 192.168.2.139
gaz:~ jeff$ ssh epc.osnetwork
ssh: Could not resolve hostname epc.osnetwork: nodename nor servname provided, or not known
现在,ssh epc
这是我通常访问 Eee PC 的方式,但出于某种原因,我认为 OS X 的某些部分正在缓存无响应,尽管机器处于在线状态,但我不知道如何解决。我甚至不确定如何以任何程度的确定性解决这个问题,我怀疑重新启动可以解决这个问题,但由于缺乏无停机解决方案,我一直使用 IP 地址(仍然可以在 Mac 上使用 获取nslookup epc
,这是最令人困惑的部分)。
如果我通过 SSH 连接到另一台在 Eee PC 宕机时没有尝试连接它的 Mac,那台 Mac 就可以毫无问题地通过 SSH 连接到它,但是当我返回到原来的 Mac 时,它仍然无法访问主机名。
网络上的其他非 Apple 机器似乎没有受到此行为的影响。
有谁知道为什么会发生这种情况,或者知道如何解决此问题?
[编辑] 我发现半小时后回来再试一次是可行的,但我仍然想知道为什么会发生这种情况以及如何纠正它。
答案1
您遇到了过于热心的 OS X DNS 缓存。下次您看到此信息时,可以将其清除:
# sudo dscacheutil -flushcache
这应该可以修复 SSH 等问题。
答案2
Mavericks 和 Yosemite(从 10.4 开始)中的命令是:
sudo killall -HUP mDNSResponder