ssh:无法解析主机名– High Sierra


3

我正在支持一位同事,他最近将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

Answers:


4

在这种情况下,有一些解决方法可以帮助您:

# install openssh from brew
brew install openssh

# /usr/local/sbin shouldn't be writable on High Sierra (by default), 
# so brew will fail to link the ssh binary

brew unlink openssh
ln -s /usr/local/Cellar/openssh/<version of openssh>/bin/ssh /usr/local/bin/ssh

链接了可用的ssh版本。我的同事现在可以按预期连接。由于他的mac上现在有ssh的两个版本,因此重要的是要确保首先在PATH上找到通过brew安装的openssh版本。

PATH=/usr/local/bin:/usr/bin
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.