Git with SSH

Verbosity commands

Dos

set GIT_SSH_COMMAND=ssh -vvv
git clone ssh://bithucket/repo

PowerShell

$env:GIT_SSH_COMMAND="ssh -vv"
git clone ssh://bithucket/repo

Bash

GIT_SSH_COMMAND="ssh -vv" git clone ssh://bitbucket/repo

Multiple keys per host

https://stackoverflow.com/a/38454037
This is an issue if you have many keys with various permissions that are being used on one machine.


The previous answers have properly explained the way to create a configuration file to manage multiple ssh keys. I think, the important thing that also needs to be explained is the replacement of a host name with an alias name while cloning the repository.

Suppose, your company's GitHub account's username is abc1234. And suppose your personal GitHub account's username is jack1234

And, suppose you have created two RSA keys, namely id_rsa_company and id_rsa_personal. So, your configuration file will look like below:

# Company account
Host company
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_company

# Personal account
Host personal
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_personal

Now, when you are cloning the repository (named demo) from the company's GitHub account, the repository URL will be something like:

Repo URL: git@github.com:abc1234/demo.git

Now, while doing git clone, you should modify the above repository URL as:

git@company:abc1234/demo.git

Notice how github.com is now replaced with the alias "company" as we have defined in the configuration file.

Similary, you have to modify the clone URL of the repository in the personal account depending upon the alias provided in the configuration file.