How to Use SSH

 

Before getting into the professional field of software development, I had always used https for cloning all of my git repositories. It wasn’t until I started juggling three different github accounts between personal, school, and work, that I realized there had to be a better way. In comes secure shell, or SSH for short, to never need to enter in a login password again!

What is SSH?

SSH is a secure protocol and a safe way of administering remote servers such as git repositories like Github.

Check for existing Key

It is a good idea to first check if there is already a default key on your computer by looking at the default folder for a mac where ssh keys are kept running ls -l ~/.ssh. If one exists already, the default names should be id_rsa and id_rsa.pub. If neither are there, then you’ll learn how to make one in the next step.

Creating the Key

If you don’t have a key already or want to setup a key for a different email account. Then run the following command entering with the desired email. For simplicity of commands, let’s switch to the /.ssh directory for now.

cd ~/.ssh
ssh-keygen -t rsa -C "your-email-address"

You should then be prompted to enter the name to save the files as, feel free to name what ever you want. To follow suit of the default, I named mine as id_rsa_COMPANY, id_rsa_SCHOOL, id_rsa_DEVELOP.

Next, you will be asked to enter a passphrase to encrypt the private and public key. If you do not wish to enter one, simply press enter twice to confirm although this is not recommended.

Great, now you just created an SSH key associated for that email account!

Save the SSH Passphrase to Your System

If you created a SSH key with a unique name and don’t want to enter this passphrase from the previous step every time. Then enter the following command.

ssh-add id_rsa_DEVELOP

Now enter the passphrase you just entered in the previous step.

##What are These id_rsa Files? id_rsa is your private key for the account and should never leave your machine, as this is what your computer uses to sign any work done for this account.

id_rsa.pub is the public key for the account, this is what you will use to enter on what ever version control system (VCS) you desire, such as github.

Adding Public Key to VCS

Log into whatever version control system you use, for my use case I use GitHub. Typically if you go into the settings, there should be a section for SSH and GPG keys. Click new SSH key and for the title, enter the name of the device you will be able to identify it such as personal-desktop and then copy-paste the contents of the id_rsa.pub file into the key section. Finally click add SSH key!

Configuring Private Keys

So now that you’ve created a key and associated it with your appropriate version control, its time to make a config file so your computer can know how to communicate with your version control using the private key. Still in the .ssh folder, check if a config file exists with ls -l. If not not, run:

touch ~/.ssh/config    //creates a blank config file
atom config				//open with atom editor, feel free to use your own editor

Now working in the config file, lets setup our personal account that we will be using the most to clone repos. Enter the following block of code.

#Default GitHub
Host github.com
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_rsa

This will allow you to clone repositories using the SSH urls just like:

git clone git@github.com:username/repo-name

Configure Multiple Emails

Let’s say for example you have a repository that you need to access at work and you want all associated work to be made with that email account. Opening the config file again, enter the following block of code.

Host github-COMPANY
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_rsa_COMPANY

Now if you ever need to clone a repository from this account, simply replace github.com with github-COMPANY like:

git clone git@github-COMPANY:username/repo-name

I recommend setting up work and school emails this way since I only clone one repository from work and a small handful for school.

Conclusion

Now any repos you clone, all work that is commited will be logged as that email and you’ll never need to constantly log into different accounts.

References

Secure shell general info

Create multiple accounts