Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Switching between multiple ssh keys in Git on Windows

I need to have multiple keys in my client to access two different accounts on Repository hosting. See https://redefy.repositoryhosting.com/support -> How do I manage multiple accounts with multiple keypairs on my client?

I do not understand how to change between different ssh keys in Git on Windows, can anybody help me?

like image 877
Tobias Ekblom Avatar asked Mar 12 '12 18:03

Tobias Ekblom


People also ask

Can I have multiple SSH keys for git?

you can have multiple ssh keys for different github accounts, use config file under . git folder which takes care of authentication.

Can you have multiple SSH keys on one computer?

For instance, you can run an Organization's GitHub account and another one for your personal projects all on the same computer. In this article, you will learn how to use multiple SSH keys for different GitHub accounts. While working with two different GitHub accounts, you must set them up using an SSH key.


3 Answers

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-one
HostName server.example.com
User user-one
IdentityFile ~/.ssh/key-one

Host account-two
HostName server.example.com
User user-two
IdentityFile ~/.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
like image 140
fajran Avatar answered Oct 12 '22 08:10

fajran


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_rsa

Host 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.

like image 40
mamapitufo Avatar answered Oct 12 '22 07:10

mamapitufo


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.

  1. Install Putty and friends (http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html)
  2. Set GIT_SSH

    set GIT_SSH=<path-to-plink.exe>

  3. Start Pageant and add you keys
  4. Run Git

hth Daniel

like image 2
Daniel S. Avatar answered Oct 12 '22 07:10

Daniel S.