Managing personal and professional Github Account simultaneously
Say you have a personal GitHub account, everything is working perfectly fine. For managing the coexistence of your professional account (enterprise Github) and your personal account, you would need to have the ability to push and pull to multiple accounts.
Let’s see how!
Table Of Contents
- Generating the SSH keys
- Attach the New Key to corresponding GitHub account
- Registering the new SSH Keys with the ssh-agent
- Finally Creating the SSH config file
- Try it Out
Step 1–Generating the SSH keys
Before generating an SSH key, we should always check existing SSH keys:
ls -al ~/.ssh
If ~/.ssh/id_rsa is available, we can reuse it, or else we can first generate a key to the default ~/.ssh/id_rsa by running:
ssh-keygen -t rsa
When asked for the location to save the keys, accept the default location by pressing enter. A private key and public key ~/.ssh/id_rsa.pub will be created at the default ssh location
~/.ssh/. Let’s use this default key pair for our personal account.
cd ~/.ssh ssh-keygen -t rsa -b 4096 -C "email@example.com" # save as id_rsa_personal ssh-keygen -t rsa -b 4096 -C "firstname.lastname@example.org" # save as id_rsa_work, you would have two different keys created ~/.ssh/id\_rsa\_personal ~/.ssh/id\_rsa\_work
The files with the .pub extension are the public files that you would add to your GitHub account. Now you should have something like —
id_rsa_personal id_rsa_personal.pub id_rsa_work id_rsa_work.pub
Step 2 — Attach the New Key to corresponding GitHub account
We already have the SSH public keys ready, and we will ask our GitHub accounts to trust the keys we have created. This is to get rid of the need for typing in the username and password every time you make a Git push.
Copy the public key pbcopy < ~/.ssh/id_rsa_personal.pub and then log in to your personal GitHub account:
- Go to Settings
- Select SSH and GPG keys from the menu to the left.
- Click on New SSH key, provide a suitable title, and paste the key in the box below
- Click Add key — and you’re done!
For the work accounts, use the corresponding public keys (pbcopy < ~/.ssh/id_rsa_work.pub) and repeat the above steps in your GitHub work accounts.
Step 3 — Registering the new SSH Keys with the ssh-agent
To use the keys, we have to register them with the ssh-agent on our machine. Ensure ssh-agent is running using the command eval “$(ssh-agent -s)”.
Add the keys to the ssh-agent like so:
ssh-add -D // clears order keys, if any ssh-add ~/.ssh/id_rsa_personal ssh-add ~/.ssh/id_rsa_work
Step 4 — Finally Creating the SSH config file
We’ve done the bulk of the workload, but now we need a way to specify when we wish to push to our personal account, and when we should instead push to our company account. To do so, let’s create a config file.
touch ~/.ssh/config // Creates the file if not exists vim config // Opens the file in VIM editor code config // Opens the file in VS code, use any editor
If you’re not comfortable with Vim, feel free to open it within any editor of your choice. Paste in the following snippet.
# Personal account, - the default config Host github.com HostName github.com User git Port 443 IdentityFile ~/.ssh/id_rsa_personal # Work account-1 Host git.corp.<work_url>.com HostName git.corp.<work_url>.com User git Port 443 IdentityFile ~/.ssh/id_rsa_work
Create the work specific git config (if not already created)
and add following snippet
.... .... [user] name = Your Name email = [w](mailto:email@example.com)firstname.lastname@example.org [includeIf "gitdir:~/work_folder/"] path = ~/work_folder/.gitconfig
The above configuration uses Conditional includes introduced in git 2.13 to handle multiple configurations.
Alternatively, to add the config name and email, do git config user.name and git config user.email.
git config user.name "Your Name" // Updates git config user name git config user.email "email@example.com"
Create the personal specific git config:
$ nano ~/Personal/.gitconfig
and add —
[user] email = firstname.lastname@example.org
Step 5— Try it Out
Proceed to authenticate the keys with GitHub using the commands below:
$ ssh -T github.com # Hi USERNAME! You've successfully authenticated, but GitHub does not provide shell access. $ ssh -T git.corp.work.com # Hi USERNAME! You've successfully authenticated, but GitHub does not provide shell access.
Repositories can be cloned using the clone command Git provides:
git clone email@example.com:personal_account_name/repo_name.git
The work repository will require a change to be made with this command:
git clone firstname.lastname@example.org:work_user1/repo_name.git
Thanks for reading this article! Feel free to leave your comments and let us know what you think. Please feel free to drop any comment to improve this article.
Please check out our other articles and website Have a great day!