ssh で Host / hostname をエイリアスに使いつつ Match host で設定する

兄弟のように同じような設定でログインするサーバーが複数台あるとする。 Host *.myproj.example.com でまとめて設定できるものの、 ssh コマンドでホスト名を指定するのが面倒だ。

その場合、Host と hostname で短いエイリアスを作ることができるが、そうすると Host *.myproj.example.com の設定は適用されなくなる。 Host がマッチングするのは本当のホスト名ではなく、コマンドで指定されたエイリアスの方だからだ。

Host エイリアスのパターン でもいけるが、今度はエイリアスじゃないホスト名でログインする場合に設定が適用されなくなる。 Match host を使うと本当のホスト名でマッチできるので、 Host より使いやすい。

# エイリアスの設定
Host isu1
  hostname isu1.myproj.example.com

Host isu2
  hostname isu2.myproj.example.com

Host isu3
  hostname isu3.myproj.example.com

# エイリアスに効かない
Host *.myproj.example.com
  User ubuntu

# エイリアスを使った時しか効かない
Host isu?
  User ubuntu

# エイリアスと本当のホスト名どっちを ssh に指定しても効くように両方のパターンを書く
Host isu? *.myproj.example.com
  User ubuntu

# Match host を使えば本当のホスト名のパターンを書くだけでエイリアスにも効く
Match host *.myproj.example.com
  User ubuntu
このブログに乗せているコードは引用を除き CC0 1.0 で提供します。