ssh config で複数の秘密鍵を切り分ける方法
ようやく、納得の行くやり方が出来たのでメモ。
まずは設定
~/.ssh/config に、下記の設定をする。
# github プライベートアカウント
Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/githubkey1
IdentitiesOnly yes
# github 仕事用アカウント
Host github.com.sub
HostName github.com
User git
Port 22
IdentityFile ~/.ssh/githubkey2
TCPKeepAlive yes
IdentitiesOnly yes
解説
ポイントは、Host 名に必ず、トップレベルドメインまで入れる事。
Host github ---> NG
Host github.com ---> OK
Host github.com.subdomain --->OK
ちなみに、最近まで一番上のトップレベルドメイン省略で設定していたせいで、何にも参照していない状態だった(辛い)。 ~/.ssh/config に設定する際には、必ずトップレベルドメインまで指定しましょう。
さて、自分は仕事の関係上、プライベートアカウントと仕事用アカウントを2つに分けて運用している。 あとはこれを使い分けるために色々やってるのだが、仕事用アカウントのリモートレポジトリを下記のように設定している
origin git@github.com.sub:仕事用アカウント名/レポジトリ名.git
ポイントは、git@github.com.subで開始している所。 こうする事で、仕事用アカウントのレポジトリは、仕事用の秘密鍵を参照するようになる。 便利。
この設定は、クローン時に下記のコマンドを実行すれば良い
git clone git@github.com.sub:仕事用アカウント名/レポジトリ名.git
その他設定
コミットする名前を変えていないならば問題ないが、もし変えたい場合、下記のように変更する
cd {仕事用アカウント名/レポジトリ名}
git config --local user.name {仕事用ユーザー名}
git config --local user.email {仕事用メールアドレス}
これを忘れてコミットする事も稀によくあるけれど、git rebase するので、問題なし(問題おおありでは?)。
コメント
コメントを投稿