SSHの秘密鍵を使い分けたい。
git サーバーや自宅サーバーや、さくらVPSやAmazonクラウド・・・そしてお仕事のサーバーなど SSHサーバーが多くなってくると鍵の管理が面倒になったりします。
サーバーごとに秘密鍵を変えることが出来る
ssh コマンドを使う際に、コマンドのオプションで鍵を指定することが出来る。
ssh -i path/to/my/private_key.file myserver
でも面倒くさい・・・鍵を毎回指定するのが面倒だ。
そして ssh 設定をつかう github や SourceTreeなどのアプリケーションだと起動オプションで鍵を指定することが出来ない。
ssh 設定を使う
ssh には ~/ssh/config という設定ファイルがある。
このファイルを使えば、サーバー毎、鍵毎に設定と変えることが出来る。
Host 192.168.2.1 Hostname 192.168.2.1 IdentityFile ~/.ssh/router.key
SourceTreeなどのユーザーのSSH設定を読み込んでくれるアプリケーションを使う場合でも大丈夫
ssh 設定の例
複数の鍵とユーザー名を設定で切り分ける。
Host my-rooter Hostname 192.168.2.1 IdentityFile ~/.ssh/router.key Host my-rooter-root Hostname 192.168.2.1 IdentityFile ~/.ssh/my-root.key user root
こう書いておけば、
takuya:~ @ ssh 192.168.2.1 # ~/.ssh/id_rsa かつ user takuya takuya:~ @ ssh my-router # ~/.ssh/router.key かつ user takuya takuya:~ @ ssh myrouter-root # ~/.ssh/my-root.key かつ user root
このように、サーバーの用途毎に名前をつけておき、ユーザー名や使う秘密鍵を指定することが出来る。
設定例
gitlab / github.com の場合
Host github-work hostname github.com identityfile /users/takuya/.ssh/github-work
github /gitlab の場合は git@hostname/username/reponame
となっていて、すべてのユーザーは git ユーザーでアクセスししている。
github 側で登録済みの公開鍵からユーザーを識別している感じ。
gitlab で使う鍵を指定する
Host gitlab.example.com hostname gitlab.example.com identityfile ~/.ssh/gitlab-ssh-priv.key Host git.1.example.com hostname git.1.example.com identityfile ~/.ssh/git-priv.key
gitlab 毎に使う鍵を変えるなども出来る。
設定をまとめたい
hostalias を使う
Host mine HostAlias my01.example.com HostAlias my02.example.com HostAlias my03.example.com
こうしておけば、順番に試してくれたり。
他にできる設定
.ssh/config はかなりいろいろな設定ができる。
SSH接続時に同時にVPNを作成したり、 SSH接続時にポートを指定したり
詳しくは man
man ssh_config
参考書籍
OpenSSH
OpenSSH[実践]入門 Software Design plus
- 作者: 川本安武
- 出版社/メーカー: 技術評論社
- 発売日: 2014/11/05
- メディア: Kindle版
- この商品を含むブログ (4件) を見る