【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