Bitbucketで1つの端末に複数アカウントのSSH鍵を登録しておく方法

Bitbucketでは同一端末からの複数のアカウント分のSSH鍵を登録しておくことができません。ここでは、ホスト名を偽装して接続を個別設定にする方法を紹介します。

なぜSSH鍵を登録しておく必要があるのか

レポジトリのクローンはhttps経由でもできますが、SSH鍵を登録しておくとpushなどをするときにいちいちパスワードを聞かれなくなるというメリットがあります。作業のたびにパスワードを聞かれるなら設定しておく方が効率がよくなります。


パスワードを聞かれるダイアログがでてしまう様子

SSH鍵を作成する

通常なら、以下のように作成します。

ssh-keygen -t rsa -C "" -f ~/.ssh/bitbucket/id_rsa

今回は以下のように作成します。

ssh-keygen -t rsa -C "" -f ~/.ssh/private_bitbucket/id_rsa

各オプションの説明は以下になります。



-t rsa 作成する鍵の暗号化形式を「rsa」(デフォルト)、「dsa」「ecdsa」「ed25519」から指定します。ここでは「rsa」と指定しています。
 -C "" 公開鍵の末尾のコメントを指定します。デフォルトは「ユーザー名@ホスト名」。「-C ""」でコメントを削除します。
-f ~/.ssh/bitbucket/id_rsa ファイルの設置先を指定します。ここでは「~/.ssh/bitbucket/id_rsa」と指定しています。

これで、/.ssh/private_bitbucket/にSSH鍵が作成されました。


/.ssh/private_bitbucket/にSSH鍵が作成されている図

SSH鍵を登録する

Bitbucketにログインしたら、ユーザーアカウントの「Personal settings」のページへ移動します。



セキュリティ項目にある「SSH鍵」のページへ移動します。
「鍵を追加」ボタンから鍵を追加します。


「鍵を追加」ボタンをクリックし、鍵を登録するダイアログを表示している様子

「Label」は任意の名前を。「Key」には事前に作っておいたSSHの公開鍵(id_rsa.pubのほう)をコピペして登録します。

/.ssh/configの設定

ここでは、ホスト名を偽装して接続を個別に設定にします。

通常なら、以下のように記述します。

Host bitbucket.org
  HostName bitbucket.org
  IdentityFile ~/.ssh/bitbucket/id_rsa
  User git

今回は2個目のbitbucketに接続するための設定が欲しいのですが上記のままでは重複してしまうので、もう1つ作成します。
以下のように1行目と3行目の記述を変更します。

Host private_bitbucket.org
  HostName bitbucket.org
  IdentityFile ~/.ssh/private_bitbucket/id_rsa
  User git

1行目に記述しているHostは任意の名前を設定します。IdentityFileはid_rsaを設置した場所を記述します。

Cloneする

これでCloneができるようになっているはずです。ただ、「クローンの作成」ボタンのコマンドを実行しても以下のようなエラーが出ます。

Cloning into '.'...
Forbidden
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

「クローンの作成」ボタンのコマンドは通常は以下のようになっています。

git clone git@bitbucket.org:<アカウント名>/<レポジトリ名>.git

上記のbitbucket.orgの部分を、先ほど~/.ssh/configに2つめとして登録したHost名に書き換えます。
今回はprivate_bitbucket.orgとします。

git clone git@private_bitbucket.org:<アカウント名>/<レポジトリ名>.git

これで、cloneできるようになるはずです。

/.git/configを確認する

プロジェクトファイル内の/.git/configを見ると、urlに今回設定したprivate_bitbucket.orgが登録されているはずです。

[remote "origin"]
	url = git@private_bitbucket.org:<アカウント名>/<レポジトリ名>.git
	fetch = +refs/heads/*:refs/remotes/origin/*

これで、pushしたときにエラーが出たり、パスワードを聞かれなかったら成功です。


関連タグ

この記事をシェアする

この記事を書いたスタッフ

デザイナー

森田かすみ

マークアップエンジニアからWebプロダクトのデザイナーへ転身し、現在はUI/UXデザインを勉強中。
ストレス発散方法はかっぱのイラストを描くこと。

おすすめ記事

この記事のハッシュタグ から関連する記事を表示しています。

他の方法で記事を探す

2022年11月

年間カレンダーへ
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30