Since August 13, 2021, Github has removed support for password authentication. Hence, creating and using and SSH key is an excellent authentication option when working with Github.
Except, sometimes you might work with two or more accounts other than one for accessing to Github or Gitlab and similar tools. For example you can have one account for your works at your company and one for the projects at school. To accomplish this, you will need to create multiple SSH key for each account.
With the problem being, in this tutorial you will learn how to configure and manage different accounts & keys for Github authentication.
First if you are new to Github or SSH keys, you can generate a new SSH key by openup your terminal and type:
$ ssh-keygen -t rsa -C "workaccount@glinteco.com"The -t is for type of encryption, here we use rsa encryption. -C is for comment, we use this to differentiate with the other key that we are going to create afterward.
Generating public/private rsa key pair.Enter file in which to save the key (/home/tphuong_k/.ssh/id_rsa):
Leave a blank to save the newly generated key in /.ssh/id_rsa
To check your generated key use:
$ ls -al ~/.sshAll ssh file on the system
total 16drwx------ 2 tphuong_k tphuong_k 4096 Jan 14 16:11 .
drwxr-x--- 45 tphuong_k tphuong_k 4096 Jan 14 16:07 ..
-rw------- 1 tphuong_k tphuong_k 2610 Jan 14 16:11 id_rsa
-rw-r--r-- 1 tphuong_k tphuong_k 578 Jan 14 16:11 id_rsa.pub
There you go, the new SSH key has been created
Next, add public SSH key to your github account, go to https://github.com/settings/keys
Here, click on New SSH key
To see your public key use:
$ cat ~/.ssh/id_rsa.pubYour added SSH key should look something like this
Continue, we add new SSH key to the SSH agent
$ ssh-add ~/.ssh/id_rsaSuccess:
Identity added: /home/tphuong_k/.ssh/id_rsa (workaccount@glinteco.com)Now you can try to add a new repository
Go to your terminal
# Make a new folder then go to the new folder$ mkdir work-repo
$ cd work-repo
# Initialize git
$ git init
# Create a new file to push
$ touch text.txt
# Git add and commit
$ git add text.txt
$ git commit -m "first commit"
#Then add remote origin for local folder
$ git remote add origin git@github.com:TuanPhuongKieu/work-repo.git
# Now you can push to that repository
$ git push origin master
Push success message:
Enumerating objects: 3, done.Counting objects: 100% (3/3), done.
Writing objects: 100% (3/3), 219 bytes | 219.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
To github.com:TuanPhuongKieu/work-repo.git
* [new branch] master -> master
Now for the second SSH key, generate another key:
$ ssh-keygen -t rsa -C "personal@email.com"This time, we don’t want to leave a blank or typing random thing in there, otherwise it would orverwrite the id_rsa file that we have generated earlier
Instead, we include the path to the new file, like:
Carry on the next steps on creating new SSH key:
Use $ ls -al ~/.ssh you can see the key we have just created:
total 32drwx------ 2 tphuong_k tphuong_k 4096 Jan 14 16:51 .
drwxr-x--- 46 tphuong_k tphuong_k 4096 Jan 14 16:39 ..
-rw------- 1 tphuong_k tphuong_k 2610 Jan 14 16:11 id_rsa
-rw------- 1 tphuong_k tphuong_k 2602 Jan 14 16:51 id_rsa_personal
-rw-r--r-- 1 tphuong_k tphuong_k 572 Jan 14 16:51 id_rsa_personal.pub
-rw-r--r-- 1 tphuong_k tphuong_k 578 Jan 14 16:11 id_rsa.pub
-rw------- 1 tphuong_k tphuong_k 978 Jan 14 16:41 known_hosts
-rw-r--r-- 1 tphuong_k tphuong_k 142 Jan 14 16:41 known_hosts.old
Continue to add the id_rsa_personal to your other github account
And add the new to ssh agent:
$ ssh-add /home/tphuong_k/.ssh/id_rsa_personalNext go to your /.ssh folder, and create config file, just a file named config with no file type:
We will need this config file to separate the two keys, open config file in text editor and add:
# Work AccountHost github.com
Hostname github.com
User git
IdentityFile ~/.ssh/id_rsa
# Personal Account
Host github-personal-account
Hostname github.com
User git
IdentityFile ~/.ssh/id_rsa_personal
In this config file we separate two blocks for two account, Host github.com and Host github-personal-account , you can name them however you prefer, and these are how you can identify where you going to add git remote origin in the future.
Saved them. Now go to the second git account and create a new repo, do the same steps as the first repo, but for the remote origin we don’t want add:
git remote add origin git@github.com:KieuTuanPhuong/personal-repo.gitReplace git@github.com with git@github-personal-account:
git remote add origin git@github-personal-account:KieuTuanPhuong/personal-repo.gitAfter adding remote origin, we can use git config --list to see current remote origin for the new folder
Then you should be able to push to the second account.
And there you go, we have finish setup two identical SSH keys for two distinctive Github accounts, you can further extend to add more key pairs following this tutorial as your need.

![[TIPS] Tig: A Simple Boost for Your Git Workflow](/_next/image?url=https%3A%2F%2Fapi.cms.glinteco.com%2Fuploads%2Flarge_tips_tig_a_simple_boost_for_your_git_workflow_cb2f63e47d.png&w=3840&q=75)

