How to tell Git which SSH key to use
It is not possible to tell Git which SSH credentials to use — strictly speaking. But you can use SSH config to effectively achieve the same result.
Suppose you have a private key ~/.ssh/special_id_rsa
and you are trying to clone the repository git@github.com:username/reponame.git
. You would need to add a new host entry to your SSH config that uses the desired private key.
# ~/.ssh/config
Host your.hostname.com
Hostname github.com
User git
IdentityFile ~/.ssh/`special_id_rsa`
If the SSH config file ~/.ssh/config
does not exist, simply create it and add the host info. You then clone the repository by replacing the repo url domain with the host defined in the SSH config.
git clone git@your.hostname.com:username/reponame.git
After successful clone,git fetch
and git commit
will automatically use the special_id_rsa
private key to connect to the Git server.
For already existing repositories however, you will additionally need to modify the Git config file .git/config
inside the project. The url of remote “origin” must be changed to the host defined in ~/.ssh/config
.
# .git/config
[remote "origin"]
url = git@your.hostname.com:username/reponame.git
Now you can “tell” Git which SSH credentials to use through SSH config.
This article first appeared on Medium last 9-10-2017