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

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

我正在为一位同事提供支持,他最近将 MacBook Pro 从 Sierra 升级到了 High Sierra。他正在尝试通过 ssh 连接到我们在现场的一台机器。该机器有一个 IPv6 地址。

~/.ssh/config文件为空,并且 ssh 密钥未发生改变。该/etc/ssh/ssh_config文件是 MBP 上默认安装的文件。Dig 运行良好,并报告了盒子的正确 IPv6 地址。Ping6 也按预期工作。他可以连接到我们内部的 git 服务器(该服务器通过 DNS 使用 IPv4 地址发布),并且可以毫无问题地进行推送/拉取。

当我让他通过 ssh 连接到盒子时,如下所示:

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,连接没有问题。此外,我们小组都使用不同年份和操作系统的 Macbook(没有其他 High Sierra 用户),到目前为止,他是唯一遇到此问题的人。

编辑:我们尝试了提出的解决方案这里。但是,Apple 的系统完整性保护却碍事。我现在不打算关闭它。我想把它作为最后的手段。

答案1

以下是一种可帮助解决此问题的方法:

# 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

相关内容