How do I setup SSH key based authentication for GitHub by using ~/.ssh/config file?

Here is short manual how to setup SSH key based authentication for GitHub.

1. Install the openssh-client if it is not already installed, and of course git:

sudo apt update && sudo apt install -y openssh-client git

2. Create user's ssh directory and a sub directory where your dedicated GitHub ssh key will be stored:

mkdir -p ~/.ssh/github
chmod 700 ~/.ssh ~/.ssh/github

3. Generate the SSH key (the output key will have octal permissions 600):

ssh-keygen -t rsa -b 4096 -C '[email protected]' -f ~/.ssh/github/id_rsa -q -N ''
  • -q - silence ssh-keygen; -N '' - empty (without) passphrase, you can assign one if you want.

4. Copy the content of the file id_rsa.pub, use the following command to output it:

cat ~/.ssh/github/id_rsa.pub

5. Go to your GitHub account. From the drop-down menu in upper right corner select Your profile. Click on Edit profile button and then select SSH and GPG keys. Click on the New SSH Key button. Type some meningful for a Title and paste the content of ~/.ssh/github/id_rsa.pub in the field Key. Then click on the Add SSH Key button.

enter image description here

6. Create the ~/.ssh/config file, if it doesn't already exist:

touch ~/.ssh/config
chmod 600 ~/.ssh/config

Edit the config file and add the following entry for the new SSH key:

Host github.com
    IdentityFile ~/.ssh/github/id_rsa

7. Test the setup. Use the following command:

ssh -T [email protected]

On the question - Are you sure you want to continue connecting (yes/no)? - answer with yes. If everything went well you should receive a greeting message like this:

Hi pa4080! You've successfully authenticated, ...

How to use the SSH key.

1. If you have already cloned repository through HTTPS, by using a command as these:

git clone https://github.com/username/repository-name.git
git clone git://github.com/username/repository-name

Go inside the repository's directory and execute the next command to allow work via SSH:

git remote set-url origin [email protected]:username/repository-name.git

2. Direct clone a repository via SSH:

git clone [email protected]:username/repository-name.git

3. In addition if you are using VSC it will work without problems with this setup. For already clonned repositories just use the Open Folder option and all VSC Git features will work.

Tags:

Git

Ssh

Openssh