Table of Contents
- Introduction
- Summary of Steps
- Create SSH Keys
- Copy Public key to GitHub Settings
- Clone Repo using SSH URL
- Issue and Resolution
- Bibliography and Reference
Introduction
- In this blog, we will see how to setup password-less Git operation for our GitHub repos
- Starting from Aug-13-2021 GitHub stopped supporting password authentication for repository related Git Operations.
- Instead, token-based authentication methods like personal access, OAuth, SSH Key, or GitHub App installation token will be required for all authenticated Git operations.
- In this blog, we will see how to setup SSH key based authentication in GitHub for doing Git operations
Summary of Steps
- Step 1: Create SSH keys for your workstation using
ssh-keygen
command - Step 2: Copy the SSH Public Key into GitHub Settings
- Step 3: Use SSH URL for the repository to clone
Create SSH Keys
I'm using Ubuntu OS workstation and performed the steps in it.
- Open terminal and Run
ssh-keygen
command The command creates following two files in$USER_HOME/.ssh
directory, -
id_rsa
private key file, and -
id_rsa.pub
public key file
$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key ($USER_HOME/.ssh/id_rsa):
Then press enter, to move further,
- It is important to Enter passphrase for your SSH key, to use the key for cloning private repo from GitHub
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Finally, we can see the below output, which shows the path where the public and private key files are stored
Your identification has been saved in $USER_HOME/.ssh/id_rsa.
Your public key has been saved in $USER_HOME/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:VRqScsqwertyuioXGpazvfrw username@workstation_name
The key's randomart image is:
+---[RSA 2048]--+
| .+. o=o . |
|.. o.oo.+ |
|o . oo+ o |
|.+ o -= + |
|o . o S |
| .o+ o . |
|.o..+ o O. |
|o.o .-- =O.*. |
|.+..E ooO. |
+----[SHA256]---+
Copy Public key to GitHub Settings
- Goto GitHub Settings
- Select
SSH and GPG key
from left pane
- Select
New SSH key
- Copy your workstation's (
id_rsa.pub
) public key content here
- Save and the key will be listed in the
SSH key section
Clone Repo using SSH URL
- Now you can use the SSH URL to clone the repository
- While cloning, you would be prompted to enter the SSH key password
$ git clone git@github.com:github_userid/repo_name.git
Cloning into 'repo_name'...
Enter passphrase for key '$USER_HOME/.ssh/id_rsa':
Checking connectivity... done.
- Once you enter your
SSH key password
, the repo will be cloned in your workstation
Issue and Resolution
- Sometime we will get below error while updating the old repo, which was previously cloned using
http
and username/password,
`fatal: could not read Username for 'https://github.com': terminal prompts disabled`
- Use the command to get rid of the issue.
# To avoid the error
# we need to change gt config to use ssh/git method
git config --global --add url."git@github.com:".insteadOf "https://github.com/"
- Windows WSL and Ubuntu
Permission denied (publickey)
error. - When you setup Github login in windows using WSL and Ubuntu make sure to create the SSH key file using the name
id_rsa
only. If we try to use other names as key file name, then we will getError: Permission denied (publickey)
error. - Refer the docs here
Bibliography and Reference
GitHub Docs for Working with SSH key
Top comments (0)