{"id":1001,"date":"2026-05-20T09:58:16","date_gmt":"2026-05-20T09:58:16","guid":{"rendered":"https:\/\/www.devopsschool.com\/tutorials\/?p=1001"},"modified":"2026-05-20T09:58:16","modified_gmt":"2026-05-20T09:58:16","slug":"how-to-use-two-github-accounts-on-one-mac-with-different-ssh-keys","status":"publish","type":"post","link":"https:\/\/www.devopsschool.com\/tutorials\/how-to-use-two-github-accounts-on-one-mac-with-different-ssh-keys\/","title":{"rendered":"How to Use Two GitHub Accounts on One Mac with Different SSH Keys"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Managing two GitHub accounts on the same Mac is very common. For example, you may have:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Account 1: Personal GitHub account\nAccount 2: Company \/ DevOps \/ Cotocus GitHub account\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">The problem starts when both accounts use GitHub SSH URLs like this:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>git@github.com:username\/repository.git\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">GitHub needs to know <strong>which SSH key<\/strong> should be used for which account. The cleanest solution is to configure multiple SSH identities using the <code>~\/.ssh\/config<\/code> file.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In this tutorial, we will configure:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>github.com  \u2192 Personal GitHub account\ndevops      \u2192 Company \/ DevOps \/ Cotocus GitHub account\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Current SSH Key Setup<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">In this example, the Mac already has two SSH key pairs:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cd ~\/.ssh\nls -1\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Output:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cotocusin\ncotocusin.pub\nid_ed25519\nid_ed25519.pub\nknown_hosts\nknown_hosts.old\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Meaning:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>id_ed25519       \u2192 private key for default\/personal GitHub account\nid_ed25519.pub   \u2192 public key for default\/personal GitHub account\n\ncotocusin        \u2192 private key for DevOps\/Cotocus GitHub account\ncotocusin.pub    \u2192 public key for DevOps\/Cotocus GitHub account\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Your SSH directory is:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/Users\/rajesh\/.ssh\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">1. Understand the Problem<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">By default, GitHub SSH URLs look like this:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>git@github.com:username\/repo.git\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">When you run:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>git clone git@github.com:username\/repo.git\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">your Mac connects to:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>github.com\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Then SSH tries to decide which private key to use.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">But if you have two GitHub accounts, SSH may choose the wrong key. This can cause errors like:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Permission denied (publickey).\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">or:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ERROR: Repository not found.\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">or GitHub may authenticate you as the wrong account.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">2. Best Solution<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Use SSH aliases.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">We will configure:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Host github.com\n    Uses ~\/.ssh\/id_ed25519\n\nHost devops\n    Uses ~\/.ssh\/cotocusin\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">After this setup:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>git@github.com:personal-user\/repo.git\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">will use:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>~\/.ssh\/id_ed25519\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">And:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>git@devops:Cotocus-QA-Teams\/.github.git\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">will use:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>~\/.ssh\/cotocusin\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">The word <code>devops<\/code> is only a local nickname on your Mac. GitHub does not see it. SSH converts it internally to <code>github.com<\/code>.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">3. Add Public Keys to Correct GitHub Accounts<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">First, print your personal public key:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cat ~\/.ssh\/id_ed25519.pub\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Copy the output and add it to your <strong>personal GitHub account<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">GitHub path:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>GitHub \u2192 Settings \u2192 SSH and GPG keys \u2192 New SSH key\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Now print your DevOps\/Cotocus public key:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cat ~\/.ssh\/cotocusin.pub\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Copy the output and add it to your <strong>DevOps\/Cotocus GitHub account<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Important rule:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>One SSH public key can be added to only one GitHub account.\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">So do not add the same <code>.pub<\/code> key to both accounts.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">4. Fix SSH File Permissions<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">SSH is strict about permissions. Run:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>chmod 700 ~\/.ssh\nchmod 600 ~\/.ssh\/id_ed25519\nchmod 600 ~\/.ssh\/cotocusin\nchmod 644 ~\/.ssh\/id_ed25519.pub\nchmod 644 ~\/.ssh\/cotocusin.pub\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Also later we will set permission for SSH config:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>chmod 600 ~\/.ssh\/config\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">5. Create or Edit SSH Config File<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Open SSH config:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>nano ~\/.ssh\/config\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Add this configuration:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Default GitHub account\nHost github.com\n    HostName github.com\n    User git\n    IdentityFile ~\/.ssh\/id_ed25519\n    IdentitiesOnly yes\n    AddKeysToAgent yes\n    UseKeychain yes\n\n# DevOps \/ Cotocus GitHub account\nHost devops\n    HostName github.com\n    User git\n    IdentityFile ~\/.ssh\/cotocusin\n    IdentitiesOnly yes\n    AddKeysToAgent yes\n    UseKeychain yes\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Save the file:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>CTRL + O\nEnter\nCTRL + X\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Now fix permission:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>chmod 600 ~\/.ssh\/config\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">6. Explanation of SSH Config<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\">Default GitHub account<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>Host github.com\n    HostName github.com\n    User git\n    IdentityFile ~\/.ssh\/id_ed25519\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">This means when you use:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>git@github.com:username\/repo.git\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">SSH will use this key:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>~\/.ssh\/id_ed25519\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">DevOps account<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>Host devops\n    HostName github.com\n    User git\n    IdentityFile ~\/.ssh\/cotocusin\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">This means when you use:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>git@devops:Cotocus-QA-Teams\/.github.git\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">SSH will actually connect to:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>github.com\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">but it will use this private key:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>~\/.ssh\/cotocusin\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">7. Add Keys to SSH Agent<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Run:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ssh-add --apple-use-keychain ~\/.ssh\/id_ed25519\nssh-add --apple-use-keychain ~\/.ssh\/cotocusin\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Check loaded keys:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ssh-add -l\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">You should see both keys listed.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">On older macOS versions, this command may also work:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ssh-add -K ~\/.ssh\/id_ed25519\nssh-add -K ~\/.ssh\/cotocusin\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">For modern macOS, prefer:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ssh-add --apple-use-keychain\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">8. Test Both GitHub Accounts<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Test default GitHub account:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ssh -T git@github.com\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Expected output:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Hi personal-username! You've successfully authenticated, but GitHub does not provide shell access.\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Now test DevOps\/Cotocus account:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ssh -T git@devops\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Expected output:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Hi cotocus-username! You've successfully authenticated, but GitHub does not provide shell access.\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">This confirms both keys are working correctly.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">9. Clone Repository Using Personal Account<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">For your default\/personal GitHub account, use normal GitHub SSH URL:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>git clone git@github.com:USERNAME\/REPO.git\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Example:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>git clone git@github.com:rajesh\/myrepo.git\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">This will use:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>~\/.ssh\/id_ed25519\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">10. Clone Repository Using DevOps\/Cotocus Account<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">For your DevOps\/Cotocus GitHub account, use <code>devops<\/code> instead of <code>github.com<\/code>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Example:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>git clone git@devops:Cotocus-QA-Teams\/.github.git\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">This will use:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>~\/.ssh\/cotocusin\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Notice the difference:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>git@github.com:Cotocus-QA-Teams\/.github.git\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">uses the default key.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">But:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>git@devops:Cotocus-QA-Teams\/.github.git\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">uses the Cotocus\/DevOps key.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That small change is the whole magic.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">11. Update Existing Repository Remote URL<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">If you already cloned a repository using the wrong URL, go inside the repository:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cd your-repo\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Check current remote:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>git remote -v\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">You may see:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>origin  git@github.com:Cotocus-QA-Teams\/.github.git (fetch)\norigin  git@github.com:Cotocus-QA-Teams\/.github.git (push)\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Change it to use the DevOps alias:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>git remote set-url origin git@devops:Cotocus-QA-Teams\/.github.git\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Check again:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>git remote -v\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Expected output:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>origin  git@devops:Cotocus-QA-Teams\/.github.git (fetch)\norigin  git@devops:Cotocus-QA-Teams\/.github.git (push)\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Now try:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>git pull\ngit push\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">12. Set Git Username and Email Per Repository<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">SSH decides authentication, but Git commit identity is separate.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Inside your personal repo:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>git config user.name \"Rajesh\"\ngit config user.email \"your-personal-email@example.com\"\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Inside your DevOps\/Cotocus repo:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>git config user.name \"Rajesh\"\ngit config user.email \"common.cotocus@gmail.com\"\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Check current repo identity:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>git config user.name\ngit config user.email\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">To check global identity:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>git config --global user.name\ngit config --global user.email\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">To list all Git config values:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>git config --list\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">13. Recommended Final Setup<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Your final SSH setup should be:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>~\/.ssh\/id_ed25519     \u2192 Default GitHub account\n~\/.ssh\/cotocusin      \u2192 DevOps\/Cotocus GitHub account\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Your <code>~\/.ssh\/config<\/code> should be:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Default GitHub account\nHost github.com\n    HostName github.com\n    User git\n    IdentityFile ~\/.ssh\/id_ed25519\n    IdentitiesOnly yes\n    AddKeysToAgent yes\n    UseKeychain yes\n\n# DevOps \/ Cotocus GitHub account\nHost devops\n    HostName github.com\n    User git\n    IdentityFile ~\/.ssh\/cotocusin\n    IdentitiesOnly yes\n    AddKeysToAgent yes\n    UseKeychain yes\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Use this for default GitHub:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>git clone git@github.com:USERNAME\/REPO.git\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Use this for DevOps\/Cotocus GitHub:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>git clone git@devops:Cotocus-QA-Teams\/.github.git\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">14. Common Errors and Fixes<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\">Error 1: Permission denied publickey<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Error:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Permission denied (publickey).\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Fix:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ssh -T git@github.com\nssh -T git@devops\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Also check:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ssh-add -l\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">If keys are not loaded:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ssh-add --apple-use-keychain ~\/.ssh\/id_ed25519\nssh-add --apple-use-keychain ~\/.ssh\/cotocusin\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Error 2: Repository not found<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Error:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ERROR: Repository not found.\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Possible reasons:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>You are using the wrong SSH key.<\/li>\n\n\n\n<li>Your GitHub account does not have access to the repository.<\/li>\n\n\n\n<li>Remote URL is using <code>github.com<\/code> instead of <code>devops<\/code>.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Check remote:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>git remote -v\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">For Cotocus repo, it should be:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>git@devops:Cotocus-QA-Teams\/.github.git\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">not:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>git@github.com:Cotocus-QA-Teams\/.github.git\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Fix:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>git remote set-url origin git@devops:Cotocus-QA-Teams\/.github.git\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Error 3: Wrong GitHub username appears<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Run:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ssh -T git@github.com\nssh -T git@devops\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">If <code>git@devops<\/code> shows the wrong username, your key may be added to the wrong GitHub account.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Check the public key:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cat ~\/.ssh\/cotocusin.pub\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Make sure this key is added to the correct GitHub account.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Error 4: Bad owner or permissions<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Error:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Bad owner or permissions on ~\/.ssh\/config\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Fix:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>chmod 700 ~\/.ssh\nchmod 600 ~\/.ssh\/config\nchmod 600 ~\/.ssh\/id_ed25519\nchmod 600 ~\/.ssh\/cotocusin\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">15. Best Practice<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Use short and meaningful aliases.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Good examples:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>github.com  \u2192 default account\ndevops      \u2192 company account\noffice      \u2192 office account\nclient      \u2192 client account\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Avoid confusing names like:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>github.com-personal\ngithub.com-cotocusin\ngithub-account-2-long-name\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">They work, but they are annoying to type daily.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Your chosen setup is clean:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>github.com = normal\/default GitHub\ndevops     = company\/DevOps GitHub\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Final Summary<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Using two GitHub accounts on one Mac is easy when you configure SSH properly.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The key idea is:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Different GitHub account = different SSH key = different SSH Host alias\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Final usage:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>git clone git@github.com:personal-user\/repo.git\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">for your default GitHub account.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">And:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>git clone git@devops:Cotocus-QA-Teams\/.github.git\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">for your DevOps\/Cotocus account.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This setup keeps both accounts clean, avoids authentication conflicts, and makes daily Git work much smoother.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Managing two GitHub accounts on the same Mac is very common. For example, you may have: The problem starts when both accounts use GitHub SSH URLs like&#8230; <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-1001","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/posts\/1001","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/comments?post=1001"}],"version-history":[{"count":1,"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/posts\/1001\/revisions"}],"predecessor-version":[{"id":1002,"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/posts\/1001\/revisions\/1002"}],"wp:attachment":[{"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/media?parent=1001"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/categories?post=1001"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/tags?post=1001"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}