75

I have a Bitbucket account for my 9-5 job and I also have a personal Bitbucket account. My goal is to be able to use both on the same computer. I have installed the latest git on a Windows 7 pc.

So currently everything with my companies Bitbucket account works fine, I can pull/push with no problems. I created a new ssh key using ssh-keygen and assigned a new name in my case "tech". But I am having issues on how to tell a local repo to use the new ssh key I created. I am assuming everytime I try to connect it uses the first ssh key.

I get the error:

$ git push conq: repository access denied. fatal: The remote end hung up unexpectedly

I found some advice on the internet but it seems to relate to a linux/git setup, for example I can't find the "config" file on windows.

TheWebGuy
  • 8,319
  • 13
  • 46
  • 61
  • Possible duplicate of [Multiple GitHub Accounts & SSH Config](http://stackoverflow.com/questions/3225862/multiple-github-accounts-ssh-config) – MrTux Jul 04 '16 at 20:09

5 Answers5

109

This blog post describes a straightforward way to add multiple ssh keys to a single computer and use one ssh key per a bitbucket account. It is much clearer than the official bitbucket documentation. To summarize:

First, make sure you have a default account setup through a tutorial like this one on Github.

For the second account:

  1. Create a new ssh key:

    ssh-keygen -f ~/.ssh/<your second account name> -C "<you email>"
    
  2. Add the ssh key:

    ssh-add ~/.ssh/<key file name> 
    
  3. Use pbcopy < ~/.ssh/<your second account name>.pub to copy the public key and add this key to your bitbucket account (in the settings area)

(On Windows you can copy the ssh key using ssh-keygen -f ~/.ssh/<your account name> -c "<your email>" | clip or on Linux you can follow these instructions.)

  1. Add the following to your ~/.ssh/config file. The first sets the default key for bitbucket.org. The second sets your second key to an alias bitbucket-account2 for bitbucket.org:

    Host bitbucket.org
      Hostname bitbucket.org
      IdentityFile ~/.ssh/id_rsa
    
    Host bitbucket-account2
      Hostname bitbucket.org
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/<your second account name>
    
  2. You can now clone projects with your default account the same way as before:

    git clone git@bitbucket.org:username/project.git
    
  3. To clone a project with the second identity, replace bitbucket.org with the Host that you specified in the ~/.ssh/config file (i.e. bitbucket-account2 above):

    git clone git@bitbucket-account2:username/project.git
    

That's it!

ZenBalance
  • 9,357
  • 13
  • 38
  • 42
52

You may get this error if you haven't added the key to the key manager (ssh-agent). To do this:

ssh-add ~/.ssh/tech

By the way, if you have multiple Bitbucket accounts, you'll need a unique key for each account. You can't reuse keys.

shim
  • 7,170
  • 10
  • 62
  • 95
MoxieandMore
  • 1,076
  • 11
  • 8
  • 4
    That fixed my problem, the step is missing from the documentation the bitbucket sit. thanks. – ams Mar 11 '12 at 06:20
0

As stated, you only need to generate your pubkey once - since you're already setup with BitBucket, where is your id_rsa (or whatever you named yours) file? On our Windows installs, it's under the user's home directory in the hidden folder .ssh. You should be able to create a config file there.

Nic
  • 11,969
  • 7
  • 36
  • 41
-1

You can add your company email in your personal bitbucket account, In bitbucket account manage page:

enter image description here

You can login your personal email account, and access both personal projects and company projects in single bitbucket account, which is using only one ssh private key.

Cody
  • 3,910
  • 3
  • 34
  • 39
-1

You should generate public/private key pair only once. Then all hosts which have your public key do allow connections from you if you provide the private key.

kan
  • 26,120
  • 6
  • 61
  • 96
  • 2
    If you have only one public/private key pair, then you cannot access two repositories on bitbucket. When you try to add your public ssh key to the second one, it will complain that that key has already been added to an account. – jononomo Jan 19 '13 at 00:00
  • @JonCrowell Sounds weird. I've not used bitbucket, but github allows assign one key to several repos. Several keys have sense for different devices. E.g. one for laptop, another for desktop. If your laptop is stolen, you could revoke its key but continue to use the desktop. – kan Jan 19 '13 at 10:37
  • 1
    I don't think this should be the accepted answer since accessing Bitbucket is a requirement in the question. – Andrew Jul 25 '13 at 00:29
  • @Andrew "You only have to create two identities (keys) if you have two different Bitbucket accounts". It tells if you have two accounts, in the question there are two repositories, not accounts. – kan Jul 25 '13 at 07:11
  • 3
    @kan - didn't the question say "I have a Bitbucket account for my 9-5 job and I also have a personal Bitbucket account. My goal is to be able to use both on the same computer."? It sounds to me like he has 2 Bitbucket accounts? – Andrew Jul 30 '13 at 06:35
  • @Andrew Hm, looks like you are right. However, it is weird why it works for him, probably he has different setup. – kan Jul 30 '13 at 07:49