我正在支持一位同事,他最近将MacBook Pro从Sierra升级到High Sierra。他正在尝试通过ssh连接到我们现场的一个盒子。有问题的盒子有一个IPv6地址。
该~/.ssh/config
文件为空,并且ssh密钥没有更改。该/etc/ssh/ssh_config
文件是MBP上默认安装的文件。Dig可以正常工作,并报告该设备的正确IPv6地址。Ping6也可以正常工作。他可以连接到我们内部的git服务器,该服务器通过带有IPv4地址的DNS发布,并且可以毫无问题地进行推/拉。
当我让他去箱子时,就像这样:
ssh user@hostname
连接失败并显示:
ssh: Could not resolve hostname [hostname]: nodename nor servname provided, or not known
将-vvvv添加到ssh会产生以下输出:
ssh -vvvv [hostname]
OpenSSH_7.6p1, LibreSSL 2.6.2
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 48: Applying options for *
debug2: ssh_connect_direct: needpriv 0
debug1: Connecting to [hostname] port 22.
ssh: Could not resolve hostname [hostname]: nodename nor servname provided, or not known
如果他使用IPv6地址连接到设备,则连接成功,并且可以登录。
我们的DNS服务器已正确配置并按预期提供地址。我正在与Sierra进行MBP,并且连接没有问题。此外,我们小组都使用具有各种年份和OS风格的Macbook(没有其他High Sierra用户),到目前为止,他是唯一遇到此问题的人。
编辑:我们尝试了此处介绍的解决方案。但是,苹果的系统完整性保护陷入了困境。我现在不会关闭它。我想把它留作最后的选择。
在不了解无法解析的主机名的情况下,很难说出问题所在。是在/ etc / hosts中,还是在DNS(全局或本地)中,是否是.local(Bonjour)名称,是否应解析为IPv4或IPv6地址,或者两者都解析?
—
Gordon Davisson
主机名(称为设备1)(例如,device1.example.com)应仅解析为IPv6地址(AAAA记录)。在此特定网段上没有A记录(IPv4)。它不在MBP的/ etc / hosts中(该主机只能包含localhost条目)。主机条目位于BIND样式的dns文件中,该文件被推送到我们的网络上的AWS和三个地理上分开的dns服务器,并通过nsd3提供服务。它不是.local名称,因为它是包含多个主机的较大的可路由网络的一部分。
—
jrogers63
我还要提到的是,按照我在下面的回答,这个问题似乎仅限于Apple的ssh实施,因为通过brew安装的openssh不受影响。在将来的某个时候(时间允许),我计划进行一次tcpdump,以查看是否可以通过Apple的ssh实现找到任何网络异常。
—
jrogers63