Complete GitHub SSH Authentication & Push Guide

Posted by

Limited Time Offer!

For Less Than the Cost of a Starbucks Coffee, Access All DevOpsSchool Videos on YouTube Unlimitedly.
Master DevOps, SRE, DevSecOps Skills!

Enroll Now

1. Why GitHub Password Authentication Fails

You initially tried:

git push
Username: AdarshAshwani
Password: ****

GitHub rejected it with:

Password authentication is not supported for Git operations.

GitHub completely removed password usage for pushing code.
Today, you must use either:

  • A Personal Access Token (PAT)
  • Or an SSH Key

This is why your first push failed.


2. Using a Personal Access Token (PAT)

A token works like a special password that GitHub accepts for Git operations.

Steps to use a PAT

  1. Create a token from your GitHub account.
  2. When git push asks for password, paste the token, not your real password.
  3. Store it so Git never asks again:
git config --global credential.helper store

When PAT is useful

  • For Windows
  • For Git GUI tools
  • When SSH is blocked
  • When you want quick access without generating keys

However, for servers, SSH keys are the best.


3. Using SSH Keys (Recommended for Servers)

SSH allows secure password-less pushes.

You followed this process:

ssh-keygen -t ed25519
cat ~/.ssh/id_ed25519.pub
git remote set-url origin git@github.com:orgname/flaurm.git
git push

But you got:

Repository not found.

Next, you tested your SSH identity:

ssh -T git@github.com

And the surprise:

Hi ashwani! You've successfully authenticated...

This meant your serverโ€™s SSH key belongs to someone else (your teammate), not your account.

Because the repo belongs to MyHospitalNow, GitHub looked for permissions of:

user = ashwani
repo = yourorganization/flaurm

Since โ€œashwaniโ€ doesnโ€™t have access, GitHub blocked the push.


4. Why โ€œRepository Not Foundโ€ Happens With SSH

Many people misunderstand this error.
It usually means:

  • The SSH key belongs to another user
  • The user does not have access to the repo
  • GitHub rejects the operation
  • Git returns โ€œRepository not foundโ€ instead of โ€œPermission deniedโ€
    (very confusing, but itโ€™s how GitHub works)

This was exactly your case.


5. Two Ways to Solve This

You have two valid solutions:


Solution 1: Give the teammate access

If youโ€™re okay letting the identity โ€œdharmu9898โ€ push:

  1. Go to your repo settings
  2. Add collaborator:
    ashwani
  3. Give write/admin permission
  4. Push again โ†’ It works immediately

This is the fastest fix and does not require new keys.


Solution 2: Replace the old SSH key with your own

If you want only your GitHub identity to push:

Step 1: Remove old keys

rm -rf ~/.ssh/*

Step 2: Generate a new key

ssh-keygen -t ed25519 -C "your-email@example.com"

Step 3: Copy the new public key

cat ~/.ssh/id_ed25519.pub

Step 4: Add to your GitHub

Not your teammateโ€™s.

Step 5: Test

ssh -T git@github.com

This time you should see:

Hi Ashwani! You've successfully authenticated...

Step 6: Push again

git push

Now everything works, because GitHub recognizes the identity.


6. How GitHub Chooses SSH Identity

GitHub does not use your username when pushing via SSH.
It uses your SSH key to detect who you are.

  • If the key belongs to your account, you get access.
  • If the key belongs to someone else, GitHub checks their permissions.
  • If they have no access โ†’ you get โ€œRepository not found.โ€

This system avoids mixing identities and improves security.


7. How to Check Which GitHub Account Your Server Uses

You did it correctly:

ssh -T git@github.com

This tells you:

  • Which GitHub user your SSH key belongs to
  • If authentication is successful
  • Whether GitHub recognizes your server

Example outputs:

Successful authentication:

Hi USERNAME! You've successfully authenticated...

Wrong identity:

Hi ashwani!

No valid key:

Permission denied (publickey)

8. How to Change Remote URL Correctly

You already used the correct command:

git remote set-url origin git@github.com:MyHospitalNow/flaurm.git

You can verify with:

git remote -v

This ensures Git pushes via SSH instead of HTTPS.


9. Summary: End-to-End Fixing Guide

Here is the complete workflow you should follow anytime SSH-based push fails:

Step 1 โ€” Check remote URL

git remote -v

Step 2 โ€” Check which GitHub identity your server uses

ssh -T git@github.com

Step 3 โ€” If wrong identity โ†’ delete old SSH keys

rm -rf ~/.ssh/*

Step 4 โ€” Generate new SSH key

ssh-keygen -t ed25519 -C "your-email@example.com"

Step 5 โ€” Add public key to GitHub โ†’ SSH keys

Step 6 โ€” Test again

ssh -T git@github.com

Step 7 โ€” If repo is private โ†’ make sure user has access

Step 8 โ€” Push

git push

10. Why This Tutorial Helps

This covers every issue you encountered:

  • Password not supported
  • Token-based login
  • SSH key creation
  • Wrong SSH identity
  • โ€œRepository not foundโ€
  • Adding collaborators
  • Server-side SSH authentication
  • Replacing keys
  • Testing access
  • Fixing repository permissions
  • Remote URL configuration

Everything is explained in a human, non-technical, clear way so your team can use it easily.

Leave a Reply

Your email address will not be published. Required fields are marked *

0
Would love your thoughts, please comment.x
()
x