9
9

More than 3 years have passed since last update.

複数のGithubアカウントをSourceTreeに設定したい[macOS]

Last updated at Posted at 2020-08-26

前提と目的

仕事用とプライベートのGithubアカウントそれぞれを使い分けたい
SSHを複数作って両方に登録したけど
どちらかのアカウントのクローンしようとすると
有効なアドレスではないと怒られた

これを解決することができたので
問題が起こってた原因と対処方法を備忘録として記録

環境

  • MacBook Pro (Retina, 13-inch, Early 2015)
  • macOS Mojava 10.14.6
  • Sourcetree 4.0.2

参考

要点

  1. SourcetreeからSSHクローンする時「git@github.com」を「git@[Host名]」にしてなかった
  2. キーチェーンに以前使ってた情報が保存されてしまっていた

設定手順

  1. SSHKeyを二種類作成
  2. SSHKeyをそれぞれのGithubに登録
  3. ./ssh/configにHost名を変えて設定
  4. git@での接続を有効化
  5. SourcetreeからSSHクローンする時「git@github.com」を「git@[Host名]」にする

[1] .SSHKeyを二種類作成

2種類のSSHKeyを作成
名前はなんでも良い。例として以下の通り。

  • id_work_rsa: 仕事用
  • id_private_rsa: プライベート用

ターミナルを開いて以下の手順で作成

# ./sshディレクトリに移動
cd ~/.ssh

# SSHkey作成(仕事用 id_work_rsa)
ssh-keygen -t rsa -f id_work_rsa -b 4096 -C [あなたのGitHubアカウントメールアドレス]

# パスフレーズを入力(パスフレーズは覚えておく)
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):

# もう一度同じパスフレーズを入力
Enter same passphrase again:

# 以下色々表示されるけどこれで終わり
Your identification has been saved in id_work_rsa.
Your public key has been saved in id_work_rsa.pub.

# SSHkey作成(プライベート用 id_private_rsa)
ssh-keygen -t rsa -f id_private_rsa -b 4096 -C [あなたのGitHubアカウントメールアドレス]

# 以下仕事用の手順と同じ

これで./sshディレクトリには
以下の通りにファイルが作られている

config
id_work_rsa
id_work_rsa.pub
id_private_rsa
id_private_rsa.pub
known_hosts

[2] .SSHKeyをそれぞれのGithubに登録

仕事用とプライベート用のアカウントに
それぞれのためのポートを登録

  1. Setting > SSH and GPG keys を開く
  2. SSH keysの「New SSH Keys」をクリック
  3. Titleは自由、わかりやすくKey作成時のメールアドレスなど
  4. Keyは作成した公開鍵をターミナルでコピーして貼り付け
  5. 「Add SSH Keys」で登録完了

ターミナルでコピーする方法

# id_private_rsaの時も同じようにコピー
pbcopy < ~/.ssh/id_work_rsa.pub 

[3] ./ssh/configにHost名を変えて設定

./ssh/configを開いて以下のように入力し保存
configがなければ作成

Host github-private
  User git
  Port 22
  HostName github.com
  IdentityFile ~/.ssh/id_private_rsa
  TCPKeepAlive yes
  IdentitiesOnly yes
  UseKeychain yes
  AddKeysToAgent yes

Host github-work
  User git
  Port 22
  HostName github.com
  IdentityFile ~/.ssh/id_work_rsa
  TCPKeepAlive yes
  IdentitiesOnly yes
  UseKeychain yes
  AddKeysToAgent yes

※ ポートの22はGitのSSH接続する時のポート番号
https://docs.github.com/ja/enterprise/2.19/admin/configuration/network-ports#エンドユーザーのためのアプリケーションポート

[4] git@での接続を有効化

登録したHostでSSH接続できるようにします
以下のコマンドを入力

ssh -T git@github-private

「fingerprints」に記載されているpublic keyと同じか確認して「yes」と入力Enter
https://docs.github.com/en/github/authenticating-to-github/githubs-ssh-key-fingerprints

The authenticity of host 'github.com (13.114.40.48)' can't be established.
RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8.
Are you sure you want to continue connecting (yes/no/[fingerprint])

以下の文言が出れば接続が成功
github-workも同じ手順で接続

Hi [あなたのGitUser名]! You've successfully authenticated, but GitHub does not provide shell access.

[5] SourcetreeからSSHクローン

Sourcetreeの「新規 > URLからクローン」する時
入力するソースURLの「git@github.com」を「git@[Host名]」にする

例)
ソースURL(SSH): git@github.com:[ユーザー名]/[リポジトリ名].git

仕事用 → git@github-work:[ユーザー名]/[リポジトリ名].git
プライベート用 → git@github-private:[ユーザー名]/[リポジトリ名].git

URLを入力するとパスフレーズを求められるので
SSHKeyを作成した時に設定したパスフレーズをそれぞれ入力する
これで両方のGitHubアカウントのSSHでのプルやプッシュが行えるようになる

※ パスフレーズを求められなかった場合

MACユーザーの場合キーチェーンにすでに
別のSSHのパスフレーズが登録されている可能性がある
その場合一度キーチェーンから削除する必要がある

「アプリケーション > キーチェーンアクセス」を起動して「GitHub」で検索

  • github.com Access Key for [ユーザー名]
  • github-private Access Key for [ユーザー名]

おそらく先にGit連携すると「github.com Access Key」で登録されてるはずなので
以前SourceTreeでSSHKeyを使った接続をしてた人は
この前に使ってたキーチェーンを削除

再度URLからクローンしようとすると
パスフレーズを要求されるはずなので、先の手順通り登録して完了

9
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
9