
私は.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" ")
それをシェル スクリプトに入れて (「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$