複数のSSHキーのうち、どのキーでGithubに接続するかの設定は/.sshのconfigファイルに記述するが、SourceTreeにSSHキーを読み込ませるには、SSHキーのファイル名に気をつけないと読み込んでくれない模様。
OS:Mac OS Big Sur
SourceTree:バージョン4.1.3
結論、SSHキーのファイル名は、**『ユーザー名-GitHub』、『ユーザー名-GitHub.pub』**とする。
既存のアカウントのSSHキーのファイル名を確認
ターミナルでSSHキーを生成する際、ファイル名を指定しないと、『id_rsa.pub』というファイル名でキーファイルが作られるが、このファイル名だとSourceTreeで複数アカウントの登録ができなかった。また、configファイルで新しいキーファイルを指定しても、うまく読み取ってくれないことがあるため、既存のアカウントのキーファイル名が『ユーザー名-GitHub.pub』となっていることを確認する。
『ユーザー名-GitHub.pub』になっていない場合は、変更し、configファイルを修正する。下記のconfigファイルの編集を参照。
SourceTreeでアカウント作成
まず、デフォルトのブラウザで、新しく登録するアカウントでGitHubにログインしておく。
ホスト:GitHub
認証タイプ:OAuth
プロトコル:SSH
を選択して、「アカウント接続」をクリック。
GitHubにSourceTreeへの連携の許可を聞かれるので、許可すると、ユーザー名に新しいアカウントが出てくる。
今回は、ユーザー名:nisogainというアカウントを追加したので、SSHキーの生成の際には、ファイル名は『nisogain-GitHub』とする。
SSHキーの生成はターミナルで行う。
SSHキーの設定
ターミナルでSSHキー作成
ターミナルで下記ディレクトリへ移動。
cd ~/.ssh
SSHキーの生成。(ファイル名は『ユーザー名-GitHub』)
ssh-keygen -t rsa
公開鍵の中身をコピー。(ファイル名は『ユーザー名-GitHub.pub』)
pbcopy < ~/.ssh/ユーザー名-GitHub.pub
GitHubへ公開鍵の登録
新しく登録するアカウントでGitHubにログインする。
『Settings』の『SSH and GPG keys』へ。
「New SSH key」をクリック。
任意のTitleを入力し、さきほど コピーした公開鍵をペーストし、保存。
configファイルの編集
まだconfigファイルがない場合は、新しく作成。
touch ~/.ssh/config
新しいアカウントでどのキーファイルを使用するかをconfigファイルに追記する。
(既存のアカウントについても、どのキーファイルを使用するかを記述していなかった場合は、記述する。)
新しく追加するアカウントのHostは、『github.com.sub』のように変更する必要あり。
# 既存のアカウント
Host github.com
HostName github.com
User git
PreferredAuthentications publickey
IdentityFile ~/.ssh/既存ユーザー名-GitHub
IdentitiesOnly yes
UseKeychain yes
AddKeysToAgent yes
# 新しいアカウント
Host github.com.sub
HostName github.com
User git
PreferredAuthentications publickey
IdentityFile ~/.ssh/新規ユーザー名-GitHub
IdentitiesOnly yes
UseKeychain yes
AddKeysToAgent yes
SourceeTree、ターミナルどちらもGitHubに接続できているかを確認
SourceTreeで接続を確認
新しく作成したアカウントの編集画面を開くと、SSHキーが表示されている。
対象のアカウントでリモートリポジトリからクローンできるか試してみる。
クローンする際はURLの設定に気をつける。下記のリモートリポジトリをクローンを参照。
ターミナルで接続を確認
Hostは、『github.com.sub』とconfigに記述したので、下記のコマンドで接続の確認をする。
ssh -T github.com.sub
下記のように返ってくれば完了
Hi (ユーザー名)! You've successfully authenticated, but GitHub does not provide shell access
リモートリポジトリをクローン
SouceTreeでクローンする場合も、下記と同様にURLを変更してあげる。
gitコマンドでクローンしてから、SourceTreeで新規でディレクトリをスキャンしてあげるほうが楽なので、ターミナルでクローンする。
GitHubでSSH接続するリモートリポジトリのURLを確認する。
『github.com』の部分をconfigで設定したHostに変更して、クローンする。
git clone git@github.com.sub:ユーザー名/リポジトリ名.git
下記コマンドで、今いるディレクトリがどのリモートリポジトリに接続されているかが確認できる。
git ls-remote
既存のアカウントで作成済みのローカルリポジトリのディレクトリへ移動して、git ls-remote
してリモートリポジトリに接続されていることが確認できた。