这不是我要解决的问题,但我一直对此感到好奇。
我在 ~/.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
and 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 的另一部分;对于那个很抱歉。
所以这个行为与 ssh 配置文件无关。我网络上的机器从我家路由器上运行的本地 DNS 服务器获取 DNS 信息。我通过运行来确定这一点,
nslookup (hostname)
这表明机器确实在查看我的本地路由器以解析有问题的主机名。碰巧 ~/.ssh/config 中的主机名与本地 DNS 服务器提供的主机名相同。