为什么 SSH 不查询 /etc/hosts?

为什么 SSH 不查询 /etc/hosts?

我正在管理一个网络环境,其中用户通过 NIS 进行身份验证。除一台机器外,所有机器都可用于通过 SSH 连接到服务器。在有问题的机器上,我收到消息

ssh: connect to host servername port 22: Connection refused

我比较了strace有问题的机器和可以正确通过 SSH 连接到服务器的机器的输出。
事实证明,无法通过 SSH 连接到服务器的计算机不会进行协商,/etc/hosts而能够通过 SSH 正确连接的计算机却可以进行协商。两台机器都/etc/hosts设置了服务器的名称和IP。最后,不咨询的机器/etc/hosts最终尝试连接到127.0.0.1(localhost)并失败并显示上述消息。可能是什么原因造成的?

附加信息:

  • 我尝试通过 SSH 访问的服务器也充当名称服务器,并且两台计算机在尝试通过 SSH 访问时都会查阅该服务器。
  • 当我这样做时,无法通过 SSH 连接到服务器的计算机可以正确地通过 SSH 连接到其他计算机
    ssh machinename
    日志strace显示该计算机咨询名称服务器(这次成功)并成功解析远程计算机名称并连接到它。

编辑:我很乐意提供您认为可能有助于解决此问题的任何其他信息。

答案1

在我看来,问题主机没有正确配置nsswitch.conf.

hosts/etc/nsswitch.conf应该看起来像这样:

hosts:  files nisplus nis dns

但是,具体内容会因您的环境而异。您应该与工作主机进行比较并做出相应的更改。

相关内容