I believe any developer at some point in time will need separate GitHub accounts for different types of projects. Since most companies use private repositories one might need a personal account to showcase their talent.
To do that we are going to be using SSH keys, which is another way of authenticating yourself rather than using the usual username and password.
So before I start going through the steps I would like to take you back a bit into how SSH keys work and how important they are:
An SSH key consists of 2 parts, the public key that gets shared across many platforms, which is used to encrypt the message that can only be decrypted by the private counterpart, and the private key that is only stored locally in the machine.
SSH is very secure as it is difficult to reverse engineer your public key to get your private one.
Now let's get back to the stages, I will be using Windows 10 OS for my demonstration but the steps are the same, especially if you are using BASH(Bourne Again Shell).
STEP 1 : Generating the SSH keys
On my laptop, I have two accounts, one called email@example.com and firstname.lastname@example.org .I will be creating SSH keys for both of them. Before we can generate the keys we have to create an ssh folder that is going to store all our keys. I would recommend making the folder hidden(should start with a dot/fullstop , like so .ssh) inside your root directory.
SSH key for the work account:
ssh-keygen -t rsa -b 4096 -C "email@example.com" -f ~/.ssh/workaccount_key
SSH key for my personal acccount:
ssh-keygen -t rsa -b 4096 -C "firstname.lastname@example.org" -f ~/.ssh/personalaccount_key
-f is used to define the file name.
-C is for adding a comment so that you will know which account will be using which key.
After clicking Enter you will be asked to enter your passphrase, this will increase your level of security but you can leave it blank though.
STEP 2 : Adding your keys to Github
If you locate your .ssh folder you will see 2 files that end with a .pub extension, when you open them ,using any text editor of your choice, your contents should look somewhat like this.
This one is an example of my personal account key which we are going to add to GitHub.
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCq7oreopBjhStlWXnYhhHIlEc2ch8J/AkqjgfBo/q5h/Q/YaQZGRWTDUQyiWdaon1swynSK13tIoU72K4avz/9i472THYVfdxacr+tHU5FtxludxN84Ss6Shglnom61gOwrkbgizrWm4vp41DfIzT+XBl8kG4o1zYWwXUOatsOGOnEKvTmXViCX2pTXSpF2+Lt3d/YI7UsSy2PnICzLxFjDDiWpWtI6VyK0bXJyvRMrwBX9XRjxjwPXK179BqmiuwauCTD9uYanBWgeu+hcJOO6phdFspph8zHje37K+fWoJzDytFK3Rr1mYX3xXN+UWo4w6sayjlP+41AtX8mJqOLjO1odm5OI250sIuVBjOTF4pUL/weL9FcU1BxKQk//OERXM0F9WKXu0I8GqMLiSUf6BQ7WXVtyHQ7IGAb1fDLrKEQy6oO6gEs5bORmeV93Yo8XclI3Q9MRKmTcM8nCSAobru8CQR0JI0nV2rNGJasVFXnc+NMaQfysXFo66c9oFpPu6h3lMhkdSh/SqBLwCjnpiUaLMzu+CvmqTxD0eWyxBpDFfwkeUYBauHNxw6Bqi3f4JQRqzBVTQlrCClPtXnlnLnxdRboV/YTEixZ4Z+xUQcb8IPqjYsaE7zBQp3VEW55O7V3war64oilbUJGkrtzF7qecbNqKaA9vR4JDSHRdQ== email@example.com
-Kindly log on to your GitHub account.
-Select on the SSH and GPG keys option and click .
- Copy all the contents of the personalaccount_key.pub file and paste them inside the key input, then as for the title you can put anything of your choice.
Log out of that account and do the same for the other account.
STEP 3 : Creating an SSH config file
Then back inside your .ssh folder, we want to create an SSH config file that allows you to define specific settings for each host (account). I created mine by typing the following command on my BASH:
After creating it open with any text editor, paste the following text and edit it accordingly .
#Default GitHub Host github.com HostName github.com User personalaccount IdentityFile ~/.ssh/personalaccount_key IdentitiesOnly yes # Other github account: work Host githubwork HostName github.com User workaccount IdentityFile ~/.ssh/workaccount_key IdentitiesOnly yes
STEP 4 : Registering your keys to ssh-agent
In the following step, we now have to add the newly created keys to the ssh-agent which manages your identities so that you don't have to enter your passphrases every time you use your SSH keys.
You start the ssh-agent using the following command on bash:
eval "$(ssh-agent -s)"
Add the SSH keys
You can also check if your SSH keys are working by using :
ssh -T githubwork
We are done, next, I want to show you how you are going to clone your repos and associate the commits with your name.
git clone firstname.lastname@example.org:personalaccount/FirstApp.git
After cloning you have to go on that particular file and open
Git BASH there and paste the following commands:
git config user.name "personalaccountname"
git config user.email "email@example.com"