5
1

More than 3 years have passed since last update.

SourceTreeを使って複数アカウントでGitHubにSSH接続する方法

Posted at

複数の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にログインしておく。

環境設定>アカウントを開き、追加。
sourcetree1.png

ホスト:GitHub
認証タイプ:OAuth
プロトコル:SSH
を選択して、「アカウント接続」をクリック。
sourcetree2.png
GitHubにSourceTreeへの連携の許可を聞かれるので、許可すると、ユーザー名に新しいアカウントが出てくる。
sourcetree3.png

今回は、ユーザー名: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」をクリック。
sourcetree6.png

任意のTitleを入力し、さきほど コピーした公開鍵をペーストし、保存。
sourcetree7.png

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キーが表示されている。
sourcetree8.png

対象のアカウントでリモートリポジトリからクローンできるか試してみる。
クローンする際は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を確認する。
sourcetree9.png

『github.com』の部分をconfigで設定したHostに変更して、クローンする。

git clone git@github.com.sub:ユーザー名/リポジトリ名.git

下記コマンドで、今いるディレクトリがどのリモートリポジトリに接続されているかが確認できる。

git ls-remote

既存のアカウントで作成済みのローカルリポジトリのディレクトリへ移動して、git ls-remoteしてリモートリポジトリに接続されていることが確認できた。

5
1
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
5
1