The sky is the limit

Vue.js、PHP、Java、Cordova、Monacaを中心にハイブリッドアプリ開発、PWA開発など効率的なWEB、iOS、Androidアプリ開発の情報を共有します。

【SSH】Github/Bitbucketの別アカウントでSSHキーを設定する方法【Github/Bitbucket】

【SSH】Github/Bitbucketの別アカウントでSSHキーを設定する方法【Github/Bitbucket】

f:id:duo-taro100:20160218004611p:plain

Macでの実施した内容になります。Windowsについては違う箇所もありますのでご了承下さい。
sshキーの作成・追加方法についてはこちらから。

www.sky-limit-future.com


今回は、GithubやBitbucketでSSHキーを分けて使いたい時の方法を解説します。
既にGithubやBitbucketのアカウントがあり、sshの設定がされている場合は、上記の記事のまま進めても上手くいかないはずです。
なぜなら、configにhostによって見るsshキーが設定されているからです。

例えば、既にGithub用のSSHキーが設定されていて、そのキーが記載されているファイル名を「id_github_rsa」とします。
その時、configファイルには以下のように記載があるはずです。

Host github github.com
HostName github.com
IdentityFile ~/.ssh/id_github_rsa
User git

一方、Githubに別のアカウントの作成して、別のSSHキーを設定する(作成ファイルを「id_github2_rsa」とすると)だけでは、host名から「id_github_rsa.pub」ファイルのキーを見に行ってしまうので上手くいきません。
これを解決するためには、configファイルに別の設定を加える必要があります。
分かりやすいようにもう一度整理します。

sshに移動

まずはここに移動しましょう。

$ cd ~/.ssh

現状の確認

既にgithubとの接続がされている状態で、そのsshキーは
・id_github_rsa
・id_github_rsa.pub

に定義されているとします。
また、configファイルには

Host github github.com
HostName github.com
IdentityFile ~/.ssh/id_github_rsa
User git

の記載があるとします。

sshキーの追加

sshキーの作成・追加方法についてはこちらから。
www.sky-limit-future.com


ここで、新たに作成したファイルを「id_github2_rsa」の名前で作成し、Githubにも公開鍵を設定したとします。

configの設定

アカウントを分けるには、HostとHostNameを設定する必要があります。
今回は「github.com」を「test.github.com」に変更しました。

#既存の記述
Host github github.com
HostName github.com
IdentityFile ~/.ssh/id_github_rsa
User git


#追加分
Host github test.github.com
HostName test.github.com
IdentityFile ~/.ssh/id_github2_rsa
User git

こうすることで、test.github.comでの接続時には今回新たに作成したSSHキーを見に行ってくれます。

接続確認

念のため接続を確認します。

$ ssh -T git@test.github.com

→ 「You've successfully authenticated」の含まれたメッセージが表示されたらOK!

注意点

host名を変えているのでsshを使ってcloneする時などは、注意が必要です。

例えば、Github上で以下のように記載されていたとしても

git@github.com:the-sky-id-the-limit/test.git

これをcloneする時は

git clone git@github.com:the-sky-id-the-limit/test.git

ではなくて

git clone git@test.github.com:the-sky-id-the-limit/test.git

とする必要があります。
Bitbucketでも方法は変わりません。
以上が、Github/Bitbucketの別アカウントでSSHキーを設定する方法でした。