↪️

【GitHub複数アカウント】リモートの向き先を変更

に公開

sshキーの作成

powershellで下記の場所に移動してsshキーを作成します。

cd ~/.ssh

.sshディレクトリが存在しない場合は下記で作成します。

mkdir ~/.ssh

.sshディレクトリ直下に移動した上で下記を実行します。

ssh-keygen -t rsa -f job_rsa -b 4096 -C "1つ目のGitHubのメールアドレスなど"

パスワードを求められるので好きなパスワードを設定します。
複数のGitHubアカウントがある場合は、その数だけsshキーを作成するため、再度下記を実行します。
※この時、rsaのファイル名とコメントは重複しないよう変えてください。

ssh-keygen -t rsa -f private_rsa -b 4096 -C "2つ目のGitHubのメールアドレスなど"

作成した公開鍵をGitHubに設定

下記を実行して表示される文字列をGitHubに設定してください。

cat job.pub

複数Githubアカウントがある場合は切り替えた上で下記で表示される文字列を設定してください。

cat private.pub

リモートの向き先を変えるconfigファイルの作成

鍵と同じディレクトリ内にconfigファイルができていない場合は下記で作成してください。

New-Item config -ItemType file

中身は下記を記述してください。
Hostはそれぞれ違うものを設定してください。なんでもいいです。

Host github-job
  User git
  Port 22
  HostName github.com
  IdentityFile ~/.ssh/job_rsa
  TCPKeepAlive yes
  IdentitiesOnly yes

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

接続確認

Git Bashで下記を実行してください。

ssh -T git@github-job

複数ある場合は下記も実行してください。

ssh -T git@github-private

実行後にアカウント名が画面に表示されれば接続OKです。
sshコマンドを叩いたときにGitHubは接続元がどのSSH公開鍵を持っているかを見ます。
次に、そのSSH公開鍵がGitHub上のどのアカウントに登録されているかを見て認証する仕組みです。

SourceTreeでバージョン管理する場合

準備1

上部メニューバーから ツール > オプション の順に選択します。
SSHクライアントの設定の「SSHクライアント」を「OpenSSH」に変更します。

準備2

上部メニューバーから リポジトリ > リモートを追加 の順に選択します。
または右上の設定を押下してもたどり着きます。
詳細タブを押下し、「グローバルユーザー設定を使う」のチェックを外します。

準備3

上部メニューバーから ツール > オプション の順に選択します。
認証タブ > 追加 でGitHubアカウントを認証させます。

リモートの追加

上部メニューバーから リポジトリ > リモートを追加 の順に選択します。
追加を押下し、GitHubからコピーした.gitで終わるsshの接続情報をコピペします。
貼り付け後、「git@github.com:」の部分をconfigファイルのHostに差し替えます。
例)「git@github-job:」

その他豆知識

SSHクライアントには「OpenSSH」と「PuTTY」があります。
OpenSSHを指定した場合は、~/.sshを自動で見に行きます。
PuTTYを指定した場合は、鍵の場所を指定する必要があります。

Discussion