How to use multiple Github accounts with ssh keys

I have my dev box and use it to write both personal projects and work related code.

Here's how to automatically use different ssh keys for different projects on the same machine.


Create two different ssh keys

Make sure you add your public keys to each of your github accounts. Pretty straightforward.

Create a config file in ~/.ssh

Include this:

# My github username is sergiotapia
Host github.com-sergiotapia
    HostName github.com
    User git
    IdentityFile ~/.ssh/mypersonalidentity
        IdentitiesOnly yes        

# Assume my organization is called mycompany
Host github.com-mycompany
    HostName github.com
    User git
    IdentityFile ~/.ssh/myworkidentity
        IdentitiesOnly yes

Configuring your git remotes to properly use the right key

There's two ways for you to go about this.

For new projects you need to clone:

Clone the project using github.com-mycompany or github.com-sergiotapia.

git clone git@github.com-mycompany:mycompany/backend-api.git

# or your personal account

git clone git@github.com-sergiotapia:sergiotapia/backend-api.git

For existing projects you have locally but need to work on.

Set the git remote using the proper naming structure.

git remote remove origin
git remote add origin git@github.com-mycompany:mycompany/backend-api.git

# or your personal account

git remote remove origin
git remote add origin git@github.com-sergiotapia:sergiotapia/backend-api.git