Both Github and Bitbucket recently changed the way developers must access their repositories when cloning, pushing or pulling. For both, ssh keys would seem like a good solution, but if you’ve got multiple accounts with either service, that can be tricky. The solution is fairly simply, though.
The solution is identical for both Github and Bitbucket, so I’ll use Bitbucket in the examples.
Create a public/private keypair for the first account
Give the file a unique name (e.g.: bitbucket_personal_rsa), and save it in your .ssh folder.
.pub version of the file (bitbucket_personal_rsa.pub), go to Bitbucket, and add it as one of your keys.
Add the new identity file to your
Host me HostName bitbucket.org IdentityFile ~/.ssh/bitbucket_personal_rsa User git
The trick here is that the value after
Host is an alias that references the current identity block and the Hostname on the next line. You can use that alias when executing git from the shell:
git clone git@me:username/myrepo.git
Or, if you need to add an origin:
git remote add origin git@me:username/myrepo.git
Add other keys to other accounts as required
And make sure to add them to your
.ssh/config file with a suitable alias:
Host me HostName bitbucket.org IdentityFile ~/.ssh/bitbucket_personal_rsa User git Host work HostName bitbucket.org IdentityFile ~/.ssh/bitbucket_work_rsa User git
Hope that helps. I had a couple of weeks of pulling my hair out trying to juggle accounts on these services. The above approach solved all my issues.