複数の public key (公開鍵) を仕方なく作ってしまった。こういう時、相手サーバーによって使う private key (秘密鍵) を指定してアクセスしないといけない。.ssh/config に設定を加えると、サーバーごとに利用する key を切り替えてくれる。
key の生成
まず key の生成する。一般的な key の作り方は過去エントリー参照のこと。
ssh-keygen で複数の public key を作る。今回はタイプの違う 2 つの鍵を作った。-f オプションで鍵ファイルのファイル名を指定できる (デフォルトは .ssh/id)。
$ ssh-keygen -t dsa -f .ssh/id_dsa $ ssh-keygen -t rsa -f .ssh/id_rsa
作った public key は相手ホストへコピー。
.ssh/config の書式
.ssh/config を次の様に書く
Host github HostName github.com User git IdentityFile ~/.ssh/id_dsa Host gitenterprise HostName gitent-scm.com User foo IdentityFile ~/.ssh/id_rsa
ssh でログインする場合、ssh github や ssh gitenterprise という風に「Host」名を指定する。すると、HostName, User, IdentityFile が自動的に選ばれる。これは scp コマンドや sftp コマンドでも同じ。
解項目の説明
- Host
- ホスト名。HostName が指定されていない時は、この値が使われる。設定の区切りとしても使われる。
- HostName
- 本当のホスト名。省略可。省略した場合は、Host の値が HostName として使われる。省略しない場合、Host はニックネームの代わりに利用可能 (ssh nickname という具合に)
- Port
- ポート番号
- User
- ログイン・ユーザー
- IdentityFile
- 秘密鍵ファイルへの PATH
あとがき
本来の使い方は、public key を一つ生成。複数のホストにその public key をコピー。同じ passphrase で複数ホストにログイン。ログインするホストごとに「鍵」を作らなくて便利。という筈。
ところが、ホストによって鍵の種類が違い、複数の public key が必要になることがある。こういう時、.ssh/config を設定しておくと便利。
なお、ホストによってユーザー名が違う場合も .ssh/config が使える。例えば下記の様な設定をしておけば、同じ public key でログイン名にユーザーを変更する必要もない。また、ホスト名も全て入力しなくて済むので楽。
Host cupcake HostName cupcake.com User foo Host donut HostName donut.info User bar
No comments:
Post a Comment