How to set up an SSH config-file for beginners [closed]

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

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>