这不是我想要解决的问题,但这是我一段时间以来一直好奇的问题。
我在 ~/.ssh/config 中定义了几个主机名,但在其他地方没有定义。值得注意的是,我没有在 /etc/hosts 中定义任何内容。
但我注意到我能够 ping 这些热门名称。为什么是这样? ping 实用程序是否专门在 ~/.ssh/config 中查找?或者这是一个操作系统范围的事情?和DNS有关系吗?
编辑:
更具体地说,我在 ~/.ssh/config 中定义了一个主机:
Host my_laptop
Hostname 192.168.1.3
Port 22
User myname
...我可以ping my_laptop
从同一本地网络上的另一台机器上,它解析为192.168.1.3
.这让我很困惑,因为“my_laptop”没有在其他地方定义,所以我假设ping
是从 ssh 配置中获取此主机名。
然而,用户 Kusalananda 提到了nslookup
和dig
(到目前为止我还不熟悉的两个命令),并且nslookup my_laptop
从另一台机器运行返回:
Server: 192.168.1.1
Address: 192.168.1.1#53
Name: my_laptop.home
Address: 192.168.1.3
192.168.1.1
是我家用路由器的地址,我知道端口53与DNS有关。我查看了路由器的设置,发现有问题的机器(“my_laptop”)在本地网络中路由器的机器列表中也以相同的主机名命名。
所以,我猜发生的事情是我的家庭路由器也是一个 DNS 服务器,而这些都与 ~/.ssh/config 中的条目没有任何关系,正如你所见可能可以说,我不太熟悉一般的网络,特别是 DNS。事实上,这个问题可能不属于这里,而是属于 Stack Exchange 的另一个部分;对于那个很抱歉。
答案1
所以这个行为与 ssh 配置文件无关。我网络上的计算机从在我的家庭路由器上运行的本地 DNS 服务器获取 DNS 信息。我通过运行确定了这一点nslookup (hostname)
,这表明机器确实正在查看我的本地路由器来解析有问题的主机名。碰巧 ~/.ssh/config 中的主机名与本地 DNS 服务器提供的主机名相同。