為什麼我可以 ping ~/.ssh/config 中定義的主機名?
這不是我要解決的問題,但我一直對此感到好奇。
我在 ~/.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
anddig
(到目前為止我還不熟悉的兩個命令),並且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 伺服器提供的主機名相同。