Ssh

為什麼我可以 ping ~/.ssh/config 中定義的主機名?

  • May 19, 2022

這不是我要解決的問題,但我一直對此感到好奇。

我在 ~/.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提到了nslookupand 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 伺服器提供的主機名相同。

引用自:https://unix.stackexchange.com/questions/703167