Written by , Updated on September 25, 2020

Being a software developer or system administrator, you may have need to work with multiple Git repositories from the differnet-2 account. For example, you may have multiple Github accounts, Gitlab, Bitbucket or AWS Codecommit accounts for the projects. If you are using http/https protocol to access git repositories, may face issues with the authentication. In this situation, ssh based access is the best option to access repositories.

This tutorial will help you to configure you Unix/Linux system to connect multiple Git account with ssh key pare based access.

Step 1 – Generate New SSH keys

First of all, check for all the available SSH keys in your account. Type: ls -l ~/.ssh to list all key pairs, So you won’t overwrite any key with below commands.

Let’s create first key pair by typing below command.

ssh-keygen -t rsa -C "your-email" 
  • Execute above command with your email address.
  • Set a new file path to prevent override existing file as: /home/rahul/.ssh/id_rsa_github_proj1
  • Press enter for passphrase and confirm passphrase to keep it empty
  • Your key is ready.

How to Setup Machine with GitHub and Multiple Accounts account git github

The above command will create two file under ~/.ssh directory. Once is private key and one is public key.

  • Private key: ~/.ssh/id_rsa_github_proj1 (Never share this file with anyone)
  • Public key: ~/.ssh/id_rsa_github_proj1.pub (Upload this file to your Git account)

Use the above command to create more SSH key pairs. Just remember to change the filename to prevent overwrite of file.

Step 2 – Attach SSH keys to Git Accounts

Now add the SSHs key to the corresponding GitHub, Gitlab, AWS Codecommit and other Git accounts. Copy the .pub file content and upload to Git accounts.

  • Github

    1. In the upper-right corner of any page, click your profile photo, then click Settings.
    2. In the user settings sidebar, click SSH and GPG keys.
    3. Click New SSH key or Add SSH key.
    4. In the “Title” field, add a descriptive label for the new key. For example, if you’re using a personal Mac, you might call this key “Personal MacBook Air”.
    5. Paste your key into the “Key” field.
    6. Click Add SSH key.
  • AWS CodeCommit

    1. Go to the my security credentials page
    2. On this page, open AWS CodeCommit credentials tab
    3. Under the SSH Keys section click Upload SSH public key button.
    4. Paste your key into the “Key” field.
    5. Click Upload SSH public key.
  • Step 3 – Create Git Config File

    Next, create a ssh configuration file for your user account. By default the user ssh configuration file exist under the .ssh directory in your home directory. Create and edit configuration file with the following file:

nano ~/.git/config 

Append below entries to this file.

Host githubproj1

  HostName github.com

  User git

  IdentityFile ~/.ssh/id_rsa_github_proj1

Host githubproj2

  HostName github.com

  User git

  IdentityFile ~/.ssh/id_rsa_github_proj2

Host awscodecommitproj3

  Hostname gitcodecommit.useast2.amazonaws.com

  User TECADMIN0123456789

  IdentityFile ~/.ssh/id_rsa_aws_codecommit_proj3

Save your file and close it. You have done with the required configuration of using multiple git accounts on a system.

Step 4 – Let’s Start Your Work

Your system is ready to use the multiple remote repositories from multiple accounts. You can connect your existing code with remote repository and push updates. For the new project, simply clone the repository on your machine and start your work.

You need to change host in git url as defined in ~/.ssh/config file. See the below examples:

For a New Repository

Repository from first Github account:

git clone ssh://github-proj1/user1/repo.git 

Repository from AWS CodeCommit account:

git clone git clone ssh://aws-codecommit-proj3/v1/repos/myrepo 

For an existing codebase

For the existing codebase, your can use the following commands to connect your code with remote repository. Then add and commit files to the repository.

cd my-code 
git init 
git remote add ssh://github-proj2/user2/repo.git 
git add . 
git commit -m "Initial commit" 
git push origin master 

Conclusion

This tutorial helped you to configure multiple Git (Github, Gitlab, AWS Codecommit or Bitbucket etc) accounts on a single machine.