3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Git】複数のGitHub/GitLabアカウントで異なるSSH鍵を使用する方法

Last updated at Posted at 2023-06-28

はじめに

自社や受託で複数の案件を持つ場合、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鍵の名前に置き換えてください。

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?