无法解析主机名

wro*_*ame 6 ssh hostname

所以我尝试这样做:

ssh $(hostname)
Run Code Online (Sandbox Code Playgroud)

它告诉我:

ssh: Could not resolve hostname woofy: Name or service not known
Run Code Online (Sandbox Code Playgroud)

它知道自己的主机名是“woofy”;为什么它不能连接到自己?

Jam*_*man 7

所以我们知道hostname返回woofy。但该名称无法解析为 IP 地址。

简短的回答是您需要为woofyin添加一个条目/etc/hosts。使其解析为 127.0.0.1。或者,如果您的系统支持 IPv6,则 ::1。

保留以前版本的备份/etc/hosts以防出错(我etckeeper为此使用了方便的软件包,但如果您喜欢旧的方式,您可以使用手动备份甚至 RCS)。

长的答案是主机名如何解析为 IP 地址是由一组配置文件控制的,这些文件在 Unix 变体之间略有不同。您可以将您的 Unix 系统配置为通过主机文件(/etc/hosts几乎可以在任何 Unix 系统上工作)或通过 DNS(具有直接 IP 可访问互联网的系统将始终执行此操作)来解析主机名。还有其他替代方案,但大多不太广泛使用(包括 LDAP 和 NIS/NIS+)。有关更多上下文,请参阅有关名称服务切换的 Wikipedia 文章。

编辑:如果这仍然导致 DNS 查找,问题可能是您的名称服务交换机配置之前咨询了 DNS,/etc/hosts因此更改为/etc/hosts无效。尝试查看/etc/nsswitch.conf(NSS 的配置方式因操作系统而异)。