GitHubとBitbucketアカウントのSSHキー設定を共存させる

3 min read読了の目安(約2700字

Bitbucketリポジトリのクローンでコケる

Bitbucketリポジトリのクローンが何故かできん!!
…と思ったら、SSHキーの設定をしてないマシンだった件。

% git clone git@bitbucket.org:hogehogeinc/xxx-yyy-zzz.git
Cloning into 'xxx-yyy-zzz'...
The authenticity of host 'bitbucket.org (104.192.141.1)' can't be established.
RSA key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxx.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'bitbucket.org,104.192.141.1' (RSA) to the list of known hosts.
git@bitbucket.org: Permission denied (publickey).
fatal: Could not read from remote repository.

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

該当マシンではGitHubアカウントのSSHキーは設定済みだったため、既存のconfigファイルにBitbucketアカウントの設定を追加して、両サービスのgit操作を共存させることにした。

また別のマシンで作業する際に忘れそうなので、設定手順をメモしておく。

環境

  • OS:macOS Catalina
  • シェル:zsh

BitbucketのSSH作成

ターミナルで以下コマンドを実行。

% ssh-keygen -t rsa -C hoge@fugo.com -f ~/.ssh/id_rsa_bitbucket
  • hoge@fugo.com 部分は対象アカウントのメールアドレス
  • id_rsa_bitbucket はBitbucket用として判別しやすい名前にしてみた
  • パスフレーズ入力(設定せずエンターキー押下でもOK)
  • パスフレーズ確認(同様)
% ssh-keygen -t rsa -C hoge@fugo.com -f ~/.ssh/id_rsa_bitbucket
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /Users/unsoluble_sugar/.ssh/id_rsa_bitbucket.
Your public key has been saved in /Users/unsoluble_sugar/.ssh/id_rsa_bitbucket.pub.
The key fingerprint is:
SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxx hoge@fugo.com
The key's randomart image is:
+---[RSA 3072]----+
...

id_rsa_bitbucket(秘密鍵)と id_rsa_bitbucket.pub(公開鍵) の2ファイルが作成される。

SSHキーを登録

作成したSSHキーをBitbucketに登録する。

SSHキーの内容をコピー

作成したSSHキーのうち id_rsa_bitbucket.pub(公開鍵)の内容をコピー。

% cat ~/.ssh/id_rsa_bitbucket.pub | pbcopy

Bitbucketに登録

Bitbucketの個人設定ページにてSSHキーを追加する。

わかりやすいLabelつけてKeyにペースト。

設定保存して完了。

.ssh/configにBitbucketの設定追加

configファイルにBitbucket用の設定を追加(Host bitbucket.org 以後)。

Host *
  AddKeysToAgent yes
  UseKeychain yes

Host github
  HostName github.com
  IdentityFile ~/.ssh/id_rsa
  Port 22
  User git

Host bitbucket.org
  User git
  HostName bitbucket.org
  IdentityFile ~/.ssh/id_rsa_bitbucket
  IdentitiesOnly yes

ここで参照するのはid_rsa_bitbucket(秘密鍵)ね。

接続確認

正しく設定できているか、SSHコマンドで接続確認。

% ssh -T git@bitbucket.org
logged in as unsoluble_sugar

You can use git to connect to Bitbucket. Shell access is disabled

以上。

参考

GitHubのSSHキー設定については、以前Qiitaに書いたのでリンク載せておく。
新しいMacでGitHubのSSH接続をするまでの環境構築手順 - Qiita

シェルはbashだけど、基本的な流れは大きく変わらないはずなので参考までに。