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" ")

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

関連情報