GitHubやBitbucketで複数アカウントを使い分ける方法

技術・開発

やべえよ……。
この便利さにハマったらもう抜け出せねえよ……。
そう、クラウド・リポジトリ・サービスのことだよ。

GitHubやBitbucketに慣れちゃうと、オンプレミスにサーバ立てるなんて不便かつ面倒なだけ。
始めからクラウドに任せときゃ、あちらこちらの他のサービスと連動もしてくれる。
本当に慣れると便利すぎて手放せない麻薬的な魅力があるね。

当ブログ管理人はプライベートのアカウントと会社のアカウントを別にしているので、複数アカウントを使い分けるための設定を公開しとく。

(1) 端末を使い分ける

もっともシンプルなのが「アカウントごとに、アクセスする端末と鍵を分ける」というもの。

  • 会社端末
    1. 鍵ペアA (会社アカ用)
  • 自宅端末
    1. 鍵ペアB (個人アカ用)

会社端末はその端末独自の秘密/公開鍵ペアAを使用し、自宅のプライベート端末はそれとは別の鍵Bを使用する。

会社PCからは個人アカウントには決してアクセスしない。
自宅PCからは会社アカウントには決してアクセスしない。

そうやって、完全に端末とアカウントが1対1で紐ついていれば何も問題ない。

ただし「やっぱり自宅の端末からも会社アカウントへアクセスしたい」と思っちゃうと、ここで問題が発生するのだ。

github も bitbucket も複数のPublicキーを登録できるので、会社アカウントへ自宅の鍵Bを登録すればいいんじゃないの?と思うかも知れない。

管理人もそう思って登録してみたところ「その鍵は(別アカで)使われてるから登録できないよ」と言われてしまったのだ。

さあどうしよう。

(2) 鍵ペアを使い分ける

結論から書くと、一つの端末内で複数のSSH鍵を使い分ければ解決だ。

既存の鍵を登録するのがダメなのだから、新たに鍵を生成すればよいわけだよね。
すなわち会社アカウントに、自宅端末で新たに作成した公開鍵を追加登録するのである。

  • 会社端末
    1. 従来の鍵ペアA (会社アカ用)
  • 自宅端末
    1. 従来の鍵ペアB (個人アカ用)
    2. 新規の鍵ペアC (会社アカ用) -NEW!-

自宅の端末から、個人用アカウントへアクセスするときは従来の鍵ペアBを。
同じ端末から会社アカウントへアクセスするときは、新たに作成した鍵ペアCを使う。

gitコマンドを打つときに、自動でこのように使い分けてくれればOKなのだが。

当然ながら鍵を作っただけでは何もしてくれないので、手動で設定することになる。

手順は以下のとおり。

  1. 新規に鍵ペアを作成
  2. github/bitbucketへ鍵を登録
  3. ~/.ssh/config に使い分けの設定を書く
  4. 使い分け設定に添う形に変更して git clone

詳しく書いていこう。

新規に鍵ペアを作成

ここはいつもどおり。引数は適当に変更して欲しい。

ssh-keygen -t rsa -P パスフレーズ -C '@office(コメント)' -f id_rsa_office

重要なのは -f オプションでファイル名を変えておくこと。
(引数無しのとき出てくるプロンプトで変えるのでもOK)
じゃないと既存のをうっかり上書きしちゃいかねないからね。

github/bitbucketへ鍵を登録

無事に鍵が生成されたら、githubやbitbucketのサイトを開こう。

bitbucketなら「アカウントの管理」→「SSHキー」→「鍵を追加」で新規作成した公開鍵を貼り付ける。

githubも同様なので省略。
(英語メニューの場合は settings – SSH keys – Add SSH key)

~/.ssh/config に使い分けの設定を書く

SSHの config ファイルを開く。
ここでは $HOME の下に .ssh ディレクトリがあるものとするけれど、環境によっては違うところになるかも。

「~/.ssh/config」を開いて(無ければ新規作成して)以下のように追加する。

Host bitbucket_for_office
    HostName bitbucket.org
    User git
    Port 22
    IdentityFile ~/.ssh/id_rsa_office
    TCPKeepAlive yes
    IdentitiesOnly yes

hostの「bitbucket_for_office」と「IdentityFile」はご自身の好きなように任意の名前にしてほしい。
(※先ほどの例で言う「鍵ペアC」のことである、念のため。)

githubの場合は bitbucket.org ってのを github.comに変えれば良い。

Host github_for_office
    HostName github.com
    User git
    Port 22
    IdentityFile ~/.ssh/id_rsa_office
    TCPKeepAlive yes
    IdentitiesOnly yes

このhostってのが使い分け用の名前になるわけだ。

それにしても閉じタグがないのを見るだけで不安になるなあ。
よく訓練されたIT土方になってきちゃってるのだろうか。

使い分け設定に添う形に変更して git clone

これでようやく、会社アカウントにアクセスできる。

いつものように git clone でソースを落としてくるわけだけれど、そこでちょっとコマンドを変更する。

サイトなどで表示されるcloneコマンドが以下のようだったら:

git clone git@bitbucket.org:office/amanesiku.git

下記のように@以下を~/.ssh/configで定義した Host に変える。

git clone git@bitbucket_for_office:office/amanesiku.git

以上でOK。
cloneのときに変更しておけば、以降はgitコマンドを叩くたび、いちいち指定しなくてもちゃんと鍵を使い分けてアクセスしてくれる。

試してないけど、通常にcloneしたあとでも remote あたりの config をいじって同様に@以下を変更すればたぶんいけると思う。

コメント

タイトルとURLをコピーしました