Skip to content

Secure Your GitHub with SSH: A Simple Guide

If you're a developer or just someone who uses GitHub, you might want to make your repository operations more secure by enabling SSH. SSH (Secure Shell) helps you create an encrypted connection between your computer and GitHub. Here’s a simple, step-by-step guide on how to set it up:

Step 1: Generate a New SSH Key

First, you need to create a new SSH key for GitHub. Use the ssh-keygen command with the ed25519 algorithm (a modern, secure algorithm). Replace youremail@domain.com with your actual email:

ssh-keygen -t ed25519 -C "youremail@domain.com"

When prompted, press Enter to save the key in the default location. You can choose to set a passphrase for extra security if you want.

Step 2: Update or Create SSH Config File

Next, open the SSH configuration file using the vi editor:

vi ~/.ssh/config

Add these lines to tell SSH to use your new key for GitHub:

Host *.github.com
    AddKeysToAgent yes
    IdentityFile ~/.ssh/id_ed25519

To save and exit in vi, press Esc, then type :wq and press Enter.

Step 3: Add Your Public Key to GitHub

GitHub needs to know your public key before it allows SSH access. To display your public key, run:

cat ~/.ssh/id_ed25519.pub

Copy the entire output, then:

  1. Go to your GitHub settings.
  2. Navigate to the SSH and GPG keys section.
  3. Click New SSH key.
  4. Paste your copied key into the "Key" field.
  5. Give it a descriptive title.
  6. Click Add SSH key.

Step 4: Test the Connection

Now, make sure your SSH connection works correctly by running:

ssh -T git@github.com

If everything is set up correctly, you’ll get a welcome message from GitHub.

Step 5: Clone a Repository via SSH

Finally, you can clone a repository using SSH. Replace yourusername with your GitHub username and anyrepo with the repository you want to clone:

git clone git@github.com:yourusername/anyrepo.git

And that’s it! You’ve successfully set up SSH for GitHub. This secure method also saves you from entering your username and password every time you work with your GitHub repositories.