Using SSH keys with git for Windows
Posted June 16, 2018
Last updated February 23, 2019 | 2c29b4f
3 minute read
I think everyone would agree that SSH keys are a much better way to authenticate than usernames and passwords. I really just love them. Anyway, I have a freshly reformatted Windows 10 computer that I was wanting to access my GitLab account from, and wanted to set it up with keys for pushing to projects. After installing Git for Windows, I wasn’t quite sure how it really worked until a little bit of Googling and of course help from StackExchange and playing around with some settings.
Ultimately, what you’ll want to do is open the Git Bash terminal, which should initially open to your user folder. Run
pwd to double check. You should get output similar to
Make the new directory and generate a key 🔗
mkdir .ssh to create the folder to hold your SSH keys. Now
cd into the new
.ssh folder, and then enter
ssh-keygen -t rsa -b 4096 -C "$(whoami)@$(hostname)--$(date -I)--SERVICE" to generate a new SSH key with the comment of
SERVICE with something like GitLab or GitHub when generating the key to make it easy to tell keys apart. Also enter the same name you put in place of
SERVICE when prompted for where to save the key. For example, if you enter “gitlab” at the prompt, it will generate a file named
gitlab.pub with your private and public SSH keys. Setting a password is optional, but remember that if it’s set, you will have to enter the password for the key every time you try to authenticate with it.
If you enter an
ls command, you should now see your new key.
Add your key to your Git service 🔗
Now you will want to get the public string from your new key to add to GitLab or GitHub so it knows the key belongs to you. In the Git Bash, enter
cat SERVICE.pub | clip where
SERVICE is what you entered when creating the key. This will copy the contents of the public key to your computer’s clipboard.
Create an SSH config file 🔗
Now if you enter
nano config, you will be able to write a file to tell your computer which key to use with which service. In
nano, enter the following:
Host gitlab.com Hostname gitlab.com User YOURGITLABUSERNAME IdentityFile /c/Users/YOURWINDOWSUSERNAME/.ssh/gitlab
Note: Make sure to change from
bitbucket.com and use your respective username for that platform in the “User” field if that is the service you’re configuring the SSH key for.
Important: Make sure you use the file name that you entered in the previous step for the
SERVICE at the end of the “IdentityFile” field.
Now, try pushing to GitLab or whichever service you defined. If you hadn’t set a password, you should just get the output of pushing to the source repository with no errors.