Multiple Accounts and SSH Keys

Multiple account with Single SSH

Problem is, Bitbucket doesn’t allow you to use the same SSH key with more than one Bitbucket account, and here is the Quick Tips to manage it.

About SSH key

Using the SSH protocol, you can connect and authenticate to remote servers and services. With SSH keys, you can connect to GitHub without supplying your username or password at each visit.

Generating a new SSH key

  • Open Git Bash.
  • Paste the text below, substituting in your GitHub/GitLab/Bitbucket email address.
  • ssh-keygen -t rsa -C “your_email@example.com”
  • When you’re prompted to “Enter a file in which to save the key,” press Enter. This accepts the default file location.
  • Enter a file in which to save the key (/c/Users/you/.ssh/id_rsa):[Press enter]
  • At the prompt, type a secure passphrase/password.
  • Enter passphrase (empty for no passphrase): [Type a passphrase]
    Enter same passphrase again: [Type passphrase again]
  • Go to C:\Users\< Current User >\.ssh\id_rsa.pub
  • Copy All Content than Pest into (Go to bitbucket Setting -> Click on SSH Key -> Add New key)

Generating a Second SSH key

  • Open Git Bash.
  • Paste the text below, substituting in your GitHub/GitLab/Bitbucket email address.
  • ssh-keygen -t rsa -f ~/.ssh/< Name of Second .pub file > -C “your_email@example.com”
    • Example : ssh-keygen -t rsa -f ~/.ssh/< accountB > -C “your_email@youremail.com”
  • When you’re prompted to “Enter a file in which to save the key,” press Enter. This accepts the default file location.
  • Enter a file in which to save the key (/c/Users/you/.ssh/id_rsa):[Press enter]
  • At the prompt, type a secure passphrase/password for second account. Plz remember this password its user for Push and Pull Command .
  • Enter passphrase (empty for no passphrase): [Type a passphrase]
    Enter same passphrase again: [Type passphrase again]
  • Go to C:\Users\< Current User >\.ssh\< accountB >.pub
  • Copy All Content than Pest into (Go to bitbucket Setting -> Click on SSH Key -> Add New key)

Create a SSH config file

When you have multiple identity files, consider creating an SSH config file 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 used in this example is:

  • Host alias
  • HostName bitbucket.org
  • IdentityFile ~/.ssh/config

To create a config file for two identities (worked 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:

To use multiple keys create a file at C:\Users\< Current User >\.ssh\config with contents similar to:

  • Host bitbucket.org
  • User git
  • Hostname bitbucket.org
  • PreferredAuthentications publickey
  • IdentityFile ~/.ssh/id_rsa
  • Host bitbucket- < Name of Second .pub file > accountB
  • User git
  • Hostname bitbucket.org
  • PreferredAuthentications publickey
  • IdentitiesOnly yes
  • IdentityFile ~/.ssh/< Name of Second .pub file >accountB

Example of Clone Repository using 2 different Accounts

With this set up I can clone with my default key as Bitbucket suggests:

Example : Git clone git@bitbucket.org:username/project.git

This below repository is contains Second Git Account

Example : Git clone git@bitbucket.org:username/project_demo.git

Just change host bitbucket.org of second git repository URL :

Syntax : Git clone git@bitbucket_< Name of Second ~/ssh/.pub file >:username/project_demo.git

Example : Git clone git@bitbucket_accountB:username/project_demo.git

Impact of Other Git Command

Example:

  • git remote set-url origin git@< Default/other Account Host >:username/project_demo.git
  • git remote add origin git@< Default/other Account Host >:username/project_demo.git