SSH key is very useful for us if we want to get rid of the need for typing in the username and password every time we make a Git push. But if we have multiple GitHub accounts on the same machine, we need to manage the SSH keys for each account.
1. Generating the SSH Keys
Before generating an SSH key, we need to check our existing SSH Keys by command:
ls -la ~/.ssh Our existing public and private key pairs will list out (if exists).
~/.ssh/id_rsa is not available (if it's available we can reuse it). We can create a new SSH key by running:
ssh-key -t rsa. Accept the default location by pressing enter when asked for the location to save the keys. We will get a private and public key at the default ssh location
Above step is supposed to be used for our primary GitHub account, but for our another account, maybe our secondary account, we will create different SSH keys with a specific name.
$ ssh-keygen -t rsa -b 4096 -C "email@example.com" -f "id_rsa_secondary"
$ ssh-keygen -t ed25519 -C "firstname.lastname@example.org" -f "id_rsa_secondary"
We have two different SSH keys created:
2. Add SSH Keys to GitHub
We already have the SSH keys ready. We will ask our GitHub accounts to recognize the keys we have created. You can follow GitHub Doc in case this process changes on GitHub website.
To copy the public key to the clipboard, run the following command, substituting for the correct filename. We will copy the primary key first.
$ xclip -selection clipboard < ~/.ssh/id_rsa.pub
Then log in to your primary GitHub account:
- Go to
SSH and GPG Keys
- Click on
New SSH key button, provide a title, and paste the key in the box.
Add SSH key and you are done
Repeat the above steps in your secondary GitHub account.
3. Registering the new SSH Keys
New keys need registered before they are useful. We have to register them with the
ssh-agent on our machine. make sure it is running by running
eval "$(ssh-agent -s)".
Once running, then add our new keys to the ssh-agent like so:
4. Create a Git Config File
This config file is used to tell git to identify which SSH key is to to be used. It lives at
~/.ssh/config, if the config does not yet exist, we can easily create it:
Here is an example from my
- git URL that uses github.com should use id_rsa (my primary GitHub account)
- git URL that uses secondary.github.com should use id_rsa _secondary (my secondary GitHub account)
5. Cloning Repository
Now that the config are in place and ready to use, we can try it by cloning the corresponding repositories. Make a note that when we clone a repo, we use the host names that we used in the SSH config file.
// uses our primary SSH key
$ git clone email@example.com:primary/repoName.git
// uses our secondary SSH key
$ git clone firstname.lastname@example.org:secondary/repoName.git
It is a little tricky but now we are done it. Just remember to clone the url with the correct Host format depending on which account you want to use.