所以我尝试这样做:
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”;为什么它不能连接到自己?
所以我们知道hostname
返回woofy
。但该名称无法解析为 IP 地址。
简短的回答是您需要为woofy
in添加一个条目/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 的配置方式因操作系统而异)。
归档时间: |
|
查看次数: |
73317 次 |
最近记录: |