Switching between multiple ssh keys in Git on Windows
I assume you use git bash and openssh.
Like what it's written in the article, you can make a configuration file for ssh client that lists all of your accounts. You can write the following configuration in your own ssh client configuration file in ~/.ssh/config
Host account-oneHostName server.example.comUser user-oneIdentityFile ~/.ssh/key-oneHost account-twoHostName server.example.comUser user-twoIdentityFile ~/.ssh/key-two
What it says is you define two, kind of, "host aliases" named account-one
and account-two
. If you use them, when making connection, the ssh client will use the corresponding HostName
, User
, and IdentityFile
for the server address, username, and ssh key file. With this you can use them to access your accounts and keys at even the same server.
In git, you can define two remotes using them
$ git remote add one account-one:repository.git$ git remote add two account-two:repository.git
then you can push to those remotes
$ git push one master$ git push two master
Which key is used for which server is handled by the SSH program that git is using to connect. In the default setup this should be the command line SSH client (openSSH?).
Using openSSH you can configure particular keyfiles for particular hosts in the ~/.ssh/config
file:
Host foo.example.com IdentityFile ~/.ssh/foo.example.com-id_rsaHost bar.example.com IdentityFile ~/.ssh/bar.example.com-id_rsa
Where ~/.ssh/*.example.com-id_rsa
are the private key files for each server.
I hope this helps.
On Windows you should try Pageant an SSH authentication agent for PuTTY, PSCP, PSFTP, and Plink. This tool can manage yout ssh keys and its pass-phrases.To use it together with Git you have to install Putty and link to the plink.exe setting the GIT_SSH variable.
- Install Putty and friends (http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html)
Set GIT_SSH
set GIT_SSH=<path-to-plink.exe>
- Start Pageant and add you keys
- Run Git
hthDaniel