会社用、クラアント用、プライベート用など複数のGithubアカウントを1台のPCで切り分けてssh接続する方法をご紹介します。
ssh鍵の生成
sshのディレクトリに移動します。
cd ~/.ssh
鍵を生成するコマンドを入力します。
ssh-keygen -t rsa -C {Githubメールアドレス} -f {作成する鍵の名前}
パスフレーズが要求されるため、任意の文字列を2回入力します。
このパスフレーズはgitをプルするときなどに使用します。
パスフレーズ設定後、秘密鍵(ファイル名)と公開鍵(ファイル名.pub)が作成されます。「ls」で確認してください。
先ほど設定した[鍵の名前]と、[鍵の名前.pub]の二つのファイルがあるとOKです。
id_rsa_main id_rsa_main.pub
Githubに公開鍵を登録
作成された公開鍵(ファイル名.pub)をGithubに登録します。
Githubページに移動し、ログインしてください。
ログイン後、[Settings] -> [SSH keys] -> [Add SSH key]に移動してください。
右上の[New ssh key]を押下します。
titleはわかりやすいものにしておきます。
keyのところへ生成した公開鍵(ファイル名.pub)を貼り付けてください。。下記のコマンドでコピーができます。
$ pbcopy < ~/.ssh/ファイル名.pub
[add SSH key]で登録完了です。
「config」ファイルの設定
アカウント毎にssh鍵を使い分ける為、ローカル環境のssh設定ファイルにHostの登録を行います。
ssh設定ファイル「config」を以下の通り書き換えます。
もしconfigファイルが存在しない場合は、「touch config」で作成してください。
今回はmainとsubでアカウントを切り替える為、2つのHostを登録します。
項目IdentityFile
に、それぞれのアカウントで使用する秘密鍵のパスを指定します。
vim config
Host github.com.main # 登録するメインアカウント
HostName github.com
User git
Port 22
IdentityFile ~/.ssh/id_rsa_main # メインアカウント用秘密鍵のパス
TCPKeepAlive yes
IdentitiesOnly yes
Host github.com.sub # 登録するサブアカウント
HostName github.com
User git
Port 22
IdentityFile ~/.ssh/id_rsa_sub # サブアカウント用秘密鍵のパス
TCPKeepAlive yes
IdentitiesOnly yes
接続の確認
configファイルに設定したHostで正常にssh接続ができるかどうか確認します。
ssh -T git@github.com.main
ssh -T git@github.com.sub
先ほど設定したパスフレーズを入力し、以下のメッセージが返ってくるとOKです。
Hi {github user name}! You've successfully authenticated, but GitHub does not provide shell access.
リポジトリをclone
Githubからcloneしてみます。
# (メインアカウントを使う場合:)
git clone git@github.com.main:username/repository-name.git
git remote add origin git@github.com.main:username/repository-name.git
正しく設定されたか確認します。
git config remote.origin.url
以降gitコマンドではHostで設定したssh鍵が使用されます。