在呼叫 ssh 之前將主機名稱擴展為 FQDN?

在呼叫 ssh 之前將主機名稱擴展為 FQDN?

我利用 .ssh/config 檔案根據子網域的給定部分適當地設定我的使用者名,例如

Host *widgetshop.com*
   User foobar
   ControlMaster auto
   ControlPath ~/.ssh/socket-%r@%h:%p

Host *
   ControlMaster auto
   ControlPath ~/.ssh/socket-%r@%h:%p

如果我寫的話這有效:

ssh foo.widgetshop.com

但如果我寫的話就不行:

ssh foo

搜尋路徑解析後,其變成相同的 FQDN。

任何人都可以在調用 ssh 之前擴展短名稱,或者有其他方法嗎?

答案1

也許你可以使用host命令:

ssh $(host -t A  foo | cut -f1 -d" ")

將其放入 shell 腳本中(將“foo”替換為“$1”)並執行 ssh。

答案2

從 OpenSSH 6.5 開始,您可以使用CanonicalizeHostnamessh_config 中的選項來執行此操作。這是一個應該執行您想要的操作的範例:

CanonicalizeHostname yes
CanonicalDomains widgetshop.com

Host *.widgetshop.com
     User foobar

答案3

ssh_config 線上說明頁回答了這個問題:

主機是命令列上給出的主機名稱參數(即在匹配之前名稱不會轉換為規範化主機名稱)。

換句話說,它行不通,因為它不是那樣運作的。

答案4

請參閱我的“替代方法”)

mbp:~ alexus$ grep f9 /etc/hosts
XX.XXX.XX.XXX   f9
mbp:~ alexus$ ssh f9 hostname
f9.XXX.org
mbp:~ alexus$ 

相關內容