3 minutes
Github: Working With multiple SSH Keys
In this post, I will be discussing how to work with multiple github accounts and setup SSH keys for each account.
Let’s talk about steps on a broader level:
- Generate SSH keys for individual github account.
- Informing the github accounts about the keys.
- Testing the connection.
Generate SSH keys for individual github account.
To generate a SSH key, we can run ssh-keygen -t <ALGORITHM> -C <COMMENT> -f <FILE_NAME> in the terminal.
ALGORITHM: dsa | ecdsa | ecdsa-sk | ed25519 | ed25519-sk | rsa
COMMENT: This is not required but is a good practice to add. Generally, **email** is used since it is unique to an github account.
FILE_NAME: For readability purpose. Eg: rsa_github_1
Example: ssh-keygen -t rsa -C akshit@example.com -f github_1
Executing this command would expect us to enter a passphrase, which is optional. It’s a good practice to set a passphrase.
Once it’s done, we can find few files created under ~/.ssh directory. We can go to this directory using cd ~/.ssh . There will be two files: <FILE_NAME> and <FILE_NAME>.pub. The former file is your private key and latter is the public key.
Now that we have a ssh key, we need to let our ssh-agent know about the same. We can run the command ssh-add -K ~/.ssh/<FILE_NAME>. It may ask us to enter passphrase that we entered in the previous step.
Example: ssh-add -K ~/.ssh/github_1
Now, lets update the ssh config file (~/.ssh/config) and add following content to the file.
Host <HOST_NAME> // This can be anything. Eg: github_acc_1
HostName github.com
User git
IdentityFile ~/.ssh/<FILE_NAME> // This is the ssh-key that we created
Informing the github accounts about the keys.
This is probably the easiest step. We need to login to our github account. Follow the steps described below:
- Go to
Settingsby clicking on icon dropdown on the header. - Select the
SSH and GPG keys. - Click on the
New SSH keybutton. - Give it any title.
- Copy the contents of
~/.ssh/<FILE_NAME>.pubto Key Section. Then, click onAdd SSH keybutton and we are done.
Testing the connection
Easiest way to test is to clone the repository. We can run the following command:
git clone <HOST_NAME>:<ORGANISATION_NAME/USER_NAME>/<REPOSITORY_NAME>.git.
Here, HOST_NAME is the one that we gave in ssh config file.
Eg: git clone github_acc_1:goakshit/sauron.git
We have successfully setup ssh with github. To work with multiple github accounts, repeat 1 and 2 again. But in ssh config file, add another HOST below the existing entry.
To clone a repository under different account, we just need to use appropriate HOST name. Thats all.
Thanks for reading all the way through. You can refer github docs for in-depth knowledge on the topic.