Ahhhhhh…the challenge of dual personalities. I have been trying to connect via SSH to all my github accounts. However, I have struggled to assign the correct hostname for the applicable SSH keys.
After lots of online searches, trials and errors, I finally figured out my mistake: I was modifying a local configuration file, instead of updating my global configuration file (.ssh/config file) which is the one SSH looks at when connecting to the requested host.
So, here is the correct process:
- Generate new SSH keys and assign them to your SSH agent per github tutorial.
- In case you wonder (I did), the SSH key is a secure and efficient way to connect to a server as you use a passphrase that is stored in your local machine. Paired with an SSH-agent, you store all your keys in memory so that you will not have to retype your long passphrase every time. Read more about this here.
- In my case, I ended up with two keys:
- I have two github accounts/usernames:
- Once you’ve added your keys to your SSH agent, you need to assign each key to the apppropriate Github account per this cool git tutorial.
- Then, you may want to change your remote from HTTPS to SSH as shown here.
- Now, you have two (or more) keys, but how to use the right one for a specific git account? The secret lies within your
.ssh/config file…and this is were I made a mistake. You want to modify the config file that SSH uses (right way), not create and modify a random config file at the local directory of your project (mistake). Therefore, you can:
$ touch ~/.ssh/config
$vim ~/.ssh/config(feel free to use whichever editor you prefer)
This is how my config file looks like:
- You want to check your SSH connections:
ssh -T email@example.com should generate a message that says:
Hi pinkintello_user! You've successfully authenticated, but GitHub does not provide shell access.
ssh -T git@github-work should generate a message that says:
Hi pinkwork_user! You've successfully authenticated, but GitHub does not provide shell access.
Now, say you want to clone your work git repo, make sure to use the correct host name:
git clone git@github-work:workAccount/pinkwork.git