Using GitHub with SSH (Secure Shell)

Secure Shell (SSH) Protocol facilitates the communication among systems in an unsecured network by providing a secure channel over it. It safeguards the connection to remote servers enabling user authentication.

Using SSH, you can connect to your GitHub account eliminating the need of giving username and password each time you push changes to the remote repository. The integration process involves setting up SSH Keys within both the local and remote systems.

Connect to GitHub using SSH

Note: If you already have an existing SSH key, you can skip step 1 and go to step 2. You can verify the same by listing all the existing keys using the command:

 $ ls -al ~/.ssh 
Steps to connect GitHub to SSH :

Step 1: Generate SSH Key on Local System

  • Launch Terminal / Git Bash.
  • Paste the below command and substitute your GitHub email address:
     $ ssh-keygen -t rsa -b 4096 -C "" 

  • Press Enter when prompted “Enter a file in which to save the key”.
  • Type a passphrase of your choice.
  • Verify creation of SSH Key:
     $ ls -al ~/.ssh 

Step 2: Add SSH Key to SSH Agent

  • Initiate ssh-agent:
     $ eval "$(ssh-agent -s)" 
  • If your key is generated with a different name, replace id_rsa in the command below:
     $ ssh-add ~/.ssh/id_rsa 

Step 3: Add the SSH Key to your GitHub Account

  • Copy key to the clipboard:
    $ clip < ~/.ssh/
    $ sudo apt-get install xclip
    $ xclip -sel clip < ~/.ssh/
    $ pbcopy < ~/.ssh/
  • Open the GitHub website and log in to your account. Go to the settings page from the menu in top right corner.
  • Select “SSH and GPG keys” from the sidebar and click on “New SSH key” option.
  • Add relevant title in the “Title” field and paste the SSH key in the “Key field“.
  • Now, click on “Add SSH key“.

Step 4: Test the SSH Connection

  • Launch Terminal / Git Bash.
  • Type:
     $ ssh -T 

  • Connection is established if you are prompted with the following message:

    Hi {username}! You’ve successfully authenticated, but GitHub does not provide shell access.

My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using or mail your article to See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.

Article Tags :

Be the First to upvote.

Please write to us at to report any issue with the above content.