Setup Multiple Git Accounts On local System

cgmacodercgmacoder
3 min read

To activate your SSH key for use with a remote Git repository, you typically need to perform the following steps:
(Here i am explaining with 2 example emails)

  1. Generate SSH Key Pair: If you haven't already done so, generate an SSH key pair on your local machine. You can do this using the ssh-keygen command. Make sure to provide a passphrase when prompted for added security.

     case1: ssh-keygen -t rsa -b 4096 -C "work@example.com"
     case2: ssh-keygen -t rsa -b 4096 -C "personal@example.com"
    
  2. Store file in your required folder
    Example::

     case1:: Enter file in which to save the key (/Users/mylaptop/.ssh/id_rsa): /Users/mylaptop/.ssh/git-accounts/work_id_rsa
     case2:: Enter file in which to save the key (/Users/mylaptop/.ssh/id_rsa): /Users/mylaptop/.ssh/git-accounts/personal_id_rsa
    
  3. Add SSH Key to SSH Agent: Add your SSH private key to the SSH agent running on your local machine.

     case1: ssh-add ~/.ssh/git-accounts/work_id_rsa
     case2: ssh-add ~/.ssh/git-accounts/personal_id_rsa
    
  4. Copy Public Key to Remote:

    • Copy the contents of your SSH public key (~/.ssh/git-accounts/work_id_rsa.pub & ~/.ssh/git-accounts/personal_id_rsa.pub) to the remote server or Git hosting service where you want to use the key. This typically involves adding the public key to your user's SSH authorized keys list.

    • For example, if you're using GitHub, you can go to your account settings, then SSH and GPG keys, and add a new SSH key with the content of above files(~/.ssh/git-accounts/work_id_rsa.pub & ~/.ssh/git-accounts/personal_id_rsa.pub).

        case1: cat ~/.ssh/git-accounts/work_id_rsa.pub
        case2: cat ~/.ssh/git-accounts/personal_id_rsa.pub
      
    • copy the code and add a new ssh key in the remote

  5. Configure SSH Config File: Create or edit the ~/.ssh/config file to specify different SSH identities for different Git hosts. Here's an example of how you can configure it:( create config file in .ssh folder)

     # Work account
     Host github.com-work
     HostName github.com
     User git
     IdentityFile ~/.ssh/git-accounts/work_id_rsa
    
     # Personal account
     Host github.com-personal
     HostName github.com
     User git
     IdentityFile ~/.ssh/git-accounts/personal_id_rsa
    
  6. Test SSH Connection: Test the SSH connection from your local machine to the remote server or Git hosting service to ensure that authentication works correctly.

     1. ssh -T git@github.com-work
     2. ssh -T git@github.com-personal
    
  7. Clone git repo using remote ssh url

     1. git clone git@github.com-work:username/repository.git
     2. git clone git@github.com-personal:username/repository.git
    
  8. Update Git Remote URLs: In each local repository, update the remote URLs to use the configured SSH aliases.

     1. git remote set-url origin git@github.com-work:username/repository.git
     2. git remote set-url origin git@github.com-personal:username/repository.git
    
  9. Configure Git Identity: Optionally, you can configure Git to use different identities (name and email) for each repository by setting local Git configuration. In the repository directory, run:

     git config user.name "Your Name"
     git config user.email "work@example.com"
    
  10. Make sure to replace placeholders(points 7, 8 & 9) like username, repository, Your Name, and work@example.com with your actual information.

    Once you've completed these steps,you can maintain different Git accounts for different repositories on your local system. your SSH keys should be set up and ready to use with your Git hosting service. You can now clone repositories, push commits, and perform other Git operations using SSH authentication.

0
Subscribe to my newsletter

Read articles from cgmacoder directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

cgmacoder
cgmacoder