First I am fairly new to SSH.

From this question I have seen the need and benefit of setting up an SSH config file. While I was doing my research I noticed that there is a lot to know on SSH and I also found out that I have been using SSH keys and not the SSH server. I have been using the keys to push my code to my hosted repos.

So now my questions are(I am using windows 10):

  1. Can I set up an SSH config file without a tool like openSSH, if so how do I do it?
  2. Where in my computer is this config file stored?
4

2 Answers

Generally, in Windows machine, the SSH config file stored in the following location: /c/Users/PC_USER_NAME/.ssh/

Just follow the steps in below (if you're using the Git Bash):

  1. Go to the .ssh directory /c/Users/PC_USER_NAME/.ssh/, click right mouse button and choose "Git Bash Here"
  2. Create a file named "config" with the following command:
touch config 
  1. Now open the config file with the command:
nano config 
  1. Now write the following lines inside the config file

Let's assume you've created two files named id_rsa_hub for Github and id_rsa_lab for GitLab

# GITHUB Host github.com HostName github.com PreferredAuthentications publickey IdentityFile ~/.ssh/id_rsa_hub # GITLAB Host gitlab.com HostName gitlab.com PreferredAuthentications publickey IdentityFile ~/.ssh/id_rsa_lab 
2

By default, your %HOME% will be your %USERPROFILE%

To create new keys, make sure to add to your environment variables:

set GH=C:\path\to\git set PATH=%GH%\bin;%GH%\usr\bin;%GH%\mingw64\bin;%PATH% 

That way, you will have all the commands you need, including ssh-keygen, on Windows 10, right from any CMD session (without even opening a git bash session).

To create a new SSH key, try first to use an SSH key without passphrase, and make sure to create it with the legacy format in a CMD session (not git bash):

ssh-keygen -m PEM -t rsa -P "" -f %USERPROFILE%\.ssh\myNewKey 

'myNewKey': no extension; no '.xxx'.
(The -m PEM is for producing the legacy format, because not all remote servers are able to understand then new OPENSSH format)

Then add your %USERPROFILE%\.ssh\config file, to associate your new key to your service (in which you will have registered your %USERPROFILE%\.ssh\myNewKey.pub public key)

See "Multiple Github Accounts With Git In Windows" for an concrete example, as in:

ssh-keygen -m PEM -t rsa -P "" -f %USERPROFILE%\.ssh\github_key 

Then, in %USERPROFILE%\.ssh\config:

Host gh HostName github.com User git IdentityFile ~/.ssh/github_key 

That way, you can replace the remote URL of GitHub repository with:

gh:<yourGitHubUser>/<yourGitHubRepo> 
4