はじめに
自社や受託で複数の案件を持つ場合、SSH鍵の作成方法をその度に調べるのは手間でした。
今回はそれぞれの手順をまとめておきます。
SSH鍵の生成
まず、各アカウントに対応するSSH鍵を生成します。下記のコマンドで生成できます。
ssh-keygen -t ed25519 -C "your_email@example.com" -f ~/.ssh/id_rsa_accountname
SSH設定の追加
次に、~/.ssh/configファイルに以下の設定を追加します。
Host github.com-accountname
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_accountname
IdentitiesOnly yes
ここで、"github.com-accountname"と"id_rsa_accountname"は先ほど生成したSSH鍵の名前に置き換えてください。
GitHub/GitLabへ登録
生成した公開鍵(id_rsa_accountname.pub)を対象のサービスに登録します。
cat ~/.ssh/id_rsa_accountname.pub
GitHubの場合
メニューから「Settings」->「SSH and GPG keys」へ移動し、鍵を登録します。
GitLabの場合
メニューから「設定」->「SSHキー」へ移動し、鍵を登録します。
リポジトリのクローン
最後に、リポジトリをクローンします。下記のように指定します。
git clone git@github.com-accountname:username/repository.git
ここで、"github.com-accountname"は設定したHost名、"username"はGitHubのユーザー名、"repository.git"はリポジトリ名に置き換えてください。
以上が、複数の案件を持つ際のSSH鍵の生成・登録の手順です。適切に設定すれば、それぞれの案件で異なるSSH鍵を使用することが可能となります。
Tips
SSHエージェントに登録
もし、上記手順を行ってもpushができない場合、ssh-agentに登録されていない可能性があります。
下記手順で確認してください。
echo $SSH_AUTH_SOCK
何か値が表示されればssh-agentは起動しています。
何も表示されない場合は、ssh-agentを起動してください。
例えば、一部のLinux環境(Ubuntuなど)ではssh-agentが自動的に起動しない場合があります。
その際は下記コマンドを実行します。
# ssh-agentが起動していない場合
eval `ssh-agent -s`
次に、ssh-addコマンドを使用して秘密鍵をSSHエージェントに追加します。
# MacOSの場合
ssh-add -K ~/.ssh/id_rsa_accountname
# 削除する場合
ssh-add -d ~/.ssh/id_rsa_accountname
-Kオプションを付けることで、MacOSのキーチェーンにパスフレーズが保存されます。これにより、再起動後も再度パスフレーズを入力する必要がなくなります。
ここで、"id_rsa_accountname"は先ほど生成したSSH鍵の名前に置き換えてください。