I have multiple Git accounts one is my personal use and one is of company use. Both accounts source need to be activated from my laptop.
Here I generated two ssh keys like id_rsa.pub,id_benwork_rsa.pub
and I configured the config of git as
Host sfsworkdid
HostName bitbucket.org
IdentityFile ~/.ssh/id_rsa
Host workdid
HostName bitbucket.org
IdentityFile ~/.ssh/id_benwork_rsa
so here my problem is::- while pushing to any repo git asking the first ssh_key passphrase.
Everytime I am changing the user.name in git config as git config user.name "mybitbucketusername".
So Please specify me how to maintain multiple git accounts with multiple ssh keys in the same system
I gone with How to work with multiple ssh keys, Multiple bitbucket accounts
but no use
Blockquote
push using multiple account / multiple identity on github / bitbucket is somewhat helpful to reach upto now
Create multiple identities for Mac OSX, GitBash, and Linux
You should at this point already have created at least a single default identity. To see if you have a default identity already, list the contents of your .ssh directory. Default identity files appear as a id_encrypt and id_encrypt.pub pair. The encrypt value is either rsa or dsa. Use the ssh-keygen command to create a new identity. In the example below, the identity is named personalid.
$ ssh-keygen -f ~/.ssh/personalid -C "personalid"
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /Users/manthony/.ssh/personalid.
Your public key has been saved in /Users/manthony/.ssh/personalid.pub.
The key fingerprint is:
7a:9c:b2:9c:8e:4e:f4:af:de:70:77:b9:52:fd:44:97 personalid
The key's randomart image is:
+--[ RSA 2048]----+
| |
| |
| .|
| Eo|
| . S . ..|
| . . o . ... .|
| . = = ..o o |
| . o X ... . .|
| .ooB.o .. |
+-----------------+
If you have multiple Bitbucket accounts, you need to generate a new public/private key pair for each account.
Create a SSH config file
When you have multiple identity files, create a SSH config file mechanisms to create aliases for your various identities. You can construct a SSH config file using many parameters and different approaches. The format for the alias entries use in this example is:
Host alias
HostName bitbucket.org
IdentityFile ~/.ssh/identity
To create a config file for two identities (workid and personalid), you would do the following:
- Open a terminal window.
- Edit the ~/.ssh/config file. If you don't
have a config file, create one.
Add an alias for each identity
combination for example:
Host workid
HostName bitbucket.org
IdentityFile ~/.ssh/workid
Host personalid
HostName bitbucket.org
IdentityFile ~/.ssh/personalid
Close and save the file.
Now, you can substitute the alias for portions of the repository URL address as below:
git@bitbucket.org:accountname/reponame.git -> git@alias:accountname/reponame.git
Load each key into the appropriate Bitbucket account
Ensure the ssh-agent is running and loaded with your keys
Clone a repository using SSH and your alias configuration
To clone a repository with one of multiple SSH identities that you configured, you clone the repo and using your alias in the SSH URL. To try this for yourself, log into Bitbucket and do the following:
- Navigate to the repository Overview.
- Display the SSH URL.
For example, ssh URL as:
git@bitbucket.org:accountname/reponame.git
then clone the repository using:
git clone git@personalid:accountname/reponame.git
This refers to official solution Configure multiple SSH identities for GitBash, Mac OSX, & Linux, It works fine for me!
An alternative to the ~/.ssh/config
method above is to specify the configuration variable core.sshCommand
in the clone command itself. For example,
git clone --config core.sshCommand='ssh -i/home/username/.ssh/id_ed25519' git@bitbucket.org:the_best/awesome_repo.git
This will set the local repository configuration value and make subsequent push/pull commands 'just work'.
$ git config --local --get core.sshCommand
ssh -i/home/username/.ssh/id_ed25519
This is supported in git versions 2.10 and later.
If you receive an "ssh: Could not resolve hostname : Name or service not known" error, the following may be helpful.
As pointed out by Shannon Chou's answer, you want to create SSH aliases. GitHub, BitBucket etc. have instructions on how to do this, but I encountered one problem on Windows 10 that may help others. SSH has two different config files: a system-wide config file and a user-specific config file. The instructions I read, including Shannon Chou's, all say to add the aliases to the user-specific config file which is located at ~/.ssh/.config
In my case, I needed to add the aliases to the system-wide configuration file, which when using Git on Windows 10 is typically located here: C:\Program Files\Git\etc\ssh\ssh_config, in Git's directory.
You can determine which config file SSH is using by running this command, "myalias" can be any string" all we're interested in is the config file path that this will output:
ssh -vv myalias
OpenSSH_7.1p2, OpenSSL 1.0.2d 9 Jul 2015
debug1: Reading configuration data /etc/ssh/ssh_config
Note in the output the file path, "/etc/ssh/ssh_config". This tells us that SSH is looking for aliases there and not in the ~/.ssh/.config file.