.ssh/configの書き方

sshを使ってると接続するサーバ毎に、ポートが違ったり秘密鍵が違ったりで引数を切り替えることがよくある。
接続するサーバ毎に指定する引数は決まっているので、よくシェルスクリプトエイリアスで対処してきたが、.ssh/configを用意すればssh側で面倒みてくれるようだ。(scpやsftpでも可)
まさに灯台もと暗し、こりゃ使わない手はないね。

Hostセクション

.ssh/configは、接続先を表す複数のHostセクションからなり、その中に細かな設定を記述していく。

Host server1
  HostName     192.168.11.101
  Port          2222
  User         nauthiz
  IdentityFile ~/.ssh/server1/id_rsa

Host server2
  HostName     192.168.11.102
  Port          2222
  User         nauthiz
  IdentityFile ~/.ssh/server2/id_rsa

Hostの名前はsshでドメインの代わりに指定できる。
例えば、sshでserver1と名付けたHostに接続したければ次のように指定すればいい。

$ ssh server1

もしパラメータを上書きしたければ、コマンドラインのオプションで指定してあげよう。そちらが優先されるよ。

ワイルドカード

Hostセクションの名前は、*で全体あるいは部分的にワイルドカード指定が可能だ。
特に共通設定として*を指定しておくと便利だろう。
ただし、*を指定するHostは最後に書くこと。
各パラメータは、マッチしたホストから順に採用されるため、
最初に*を指定すると以降にHostが無視されてしまう。

Host *.sample.co.jp
  # *.sample.co.jpに接続する場合の共通設定

Host *
  # 全接続先の共通設定

Host毎の設定

HostName 接続先のドメインやIPアドレス 例) 192.168.11.102
Port ポート 例) 22
User ログインするユーザ 例) nauthiz
IdentityFile 公開鍵認証に使用する秘密鍵 例) ~/.ssh/id_rsa

設定できるパラメータは他にたくさんあるので詳しいは次を参照。

$ man ssh_config