
我利用 .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 開始,您可以使用CanonicalizeHostname
ssh_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$