Add SSH key to Github account for a Windows user - code-co-op/learning-web-development GitHub Wiki

Issue

Each time I want to push a commit to the remote branch I have to enter my GitHub creditials

Solution

Add SSH key to Github account

The approach to the solution can either begin from

  1. You have an existing ssh key
  2. You do not have an existing ssh key

Check if I have an ssh key

Notes here taken from checking for existing ssh keys

  1. Open Git Bash.

  2. Enter ls -al ~/.ssh to see if existing SSH keys are present:

    $ ls -al ~/.ssh
    # Lists the files in your .ssh directory, if they exist
    
    • Unix commands above explained
    • ls = list all files in the current directory
    • -al = including hidden files, in a long format
    • ~ = your home directory
    • / = root level
    • .ssh = folder named .ssh
  3. Check the directory listing to see if you already have a public SSH key. By default, the filenames of the public keys are one of the following:

    • id_dsa.pub
    • id_ecdsa.pub
    • id_ed25519.pub
    • id_rsa.pub

If you don't have an existing public and private key pair, or don't wish to use any that are available to connect to GitHub, then generate a new SSH key. If you see an existing public and private key pair listed (for example id_rsa.pub and id_rsa) that you would like to use to connect to GitHub, you can add your SSH key to the ssh-agent.

Generate a new SSH key

Notes here taken from generating a new ssh key

  1. Open Git Bash.
  2. Paste the text below, substituting in your GitHub email address.
    $ ssh-keygen -t rsa -b 4096 -C "[email protected]"
    
    This creates a new ssh key, using the provided email as a label.
    > Generating public/private rsa key pair.
    
  3. When you're prompted to "Enter a file in which to save the key," press Enter. This accepts the default file location.
    > Enter a file in which to save the key (/c/Users/you/.ssh/id_rsa):[Press enter]
    
  4. At the prompt, type a secure passphrase. For more information, see "Working with SSH key passphrases".
    > Enter passphrase (empty for no passphrase): [Type a passphrase]
    > Enter same passphrase again: [Type passphrase again]
    

Add your SSH key to the ssh-agent

If you have GitHub Desktop installed, you can use it to clone repositories and not deal with SSH keys. It also comes with the Git Bash tool, which is the preferred way of running git commands on Windows.

  1. Ensure the ssh-agent is running:
  • If you are using the Git Shell that's installed with GitHub Desktop, the ssh-agent should be running.
  • If you are using another terminal prompt, such as Git for Windows, you can use the "Auto-launching the ssh-agent" instructions in "Working with SSH key passphrases", or start it manually:
    # start the ssh-agent in the background
    $ eval $(ssh-agent -s)
    > Agent pid 59566
    
  1. Add your SSH private key to the ssh-agent. If you created your key with a different name, or if you are adding an existing key that has a different name, replace id_rsa in the command with the name of your private key file.
    $ ssh-add ~/.ssh/id_rsa
    

Add the SSH key to your GitHub account.

Note take from adding a new ssh key to your github account

  1. Copy the SSH key to your clipboard. If your SSH key file has a different name than the example code, modify the filename to match your current setup. When copying your key, don't add any newlines or whitespace.

    $ clip < ~/.ssh/id_rsa.pub
    # Copies the contents of the id_rsa.pub file to your clipboard
    
    **Tip**: If clip isn't working, you can locate the hidden .ssh folder, open the file in your favorite text editor, and copy it to your clipboard.
    
  2. In the upper-right corner of any page, click your profile photo, then click Settings.

    Setting icon in the user bar

  3. In the user settings sidebar, click SSH and GPG keys.

    Authentication keys

  4. Click New SSH key or Add SSH key.

    SSH key button

  5. In the "Title" field, add a descriptive label for the new key. For example, if you're using a personal Mac, you might call this key "Personal MacBook Air".

  6. Paste your key into the "Key" field.

    The key field

  7. Click Add SSH key.

    The Add key button

  8. If prompted, confirm your GitHub password.

    Sudo mode dialog

Testing your SSH connection

Notes take from testing your ssh connection When you test your connection, you'll need to authenticate this action using your password, which is the SSH key passphrase you created earlier. For more information on working with SSH key passphrases, see "Working with SSH key passphrases".

  1. Open Git Bash.

  2. Enter the following:

    $ ssh -T [email protected]
    # Attempts to ssh to GitHub
    

    You may see a warning like this:

    The authenticity of host 'github.com (IP ADDRESS)' can't be established. RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48. Are you sure you want to continue connecting (yes/no)? or like this: The authenticity of host 'github.com (IP ADDRESS)' can't be established.
    RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8. Are you sure you want to continue connecting (yes/no)?

  3. Verify that the fingerprint in the message you see matches one of the messages in step 2, then type yes:

    > Hi username! You've successfully authenticated, but GitHub does not
    > provide shell access.
    
  4. Verify that the resulting message contains your username. If you receive a "permission denied" message, see "Error: Permission denied (publickey)".