Skip to content

Instantly share code, notes, and snippets.

@xirixiz
Forked from developius/README.md
Last active December 3, 2024 21:55
Show Gist options
  • Save xirixiz/b6b0c6f4917ce17a90e00f9b60566278 to your computer and use it in GitHub Desktop.
Save xirixiz/b6b0c6f4917ce17a90e00f9b60566278 to your computer and use it in GitHub Desktop.
Set up GitHub push with SSH keys

SSH keypair setup for GitHub (or GitHub/GitLab/BitBucket, etc, etc)

Create a repo.

Make sure there is at least one file in it (even just the README.md)

Generate a SSH key pair (private/public):

ssh-keygen -t rsa -C "your_email@example.com"

or even better:

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

It also possible to use ed25519. There are pros and cons, but personally I've had some issues and that is the reason I've chosen to stick to 4096 rsa for now.

Copy the contents of the public SSH key

macOS:

pbcopy < ~/.ssh/id_rsa.pub

GNU/Linux (requires the xclip package):

xclip -sel clip < ~/.ssh/id_rsa.pub

Windows Command Line:

type %userprofile%\.ssh\id_rsa.pub | clip

Git Bash on Windows / Windows PowerShell:

cat ~/.ssh/id_rsa.pub | clip

or ofcourse copy it via your favorite editor, cat, or whatever suits your needs :)

Copy the public SSH key to GitHub

Copy the contents of the to your SSH keys to your GitHub account settings (https://github.com/settings/keys).

Test the SSH key:

ssh -T git@github.com

Change directory into the local clone of your repository (if you're not already there) and run:

git remote set-url origin git@github.com:username/your-repository.git

If the repo is under an organization the command is slightly different:

git remote set-url origin git@github.com:organization/your-repo.git

Now try editing a file (try the README) and then do:

git add -A
git commit -am "Update README.md"
git push

Add the key to the ssh-agent

ssh-add ~/.ssh/id_rsa

You should not be asked for a username or password. If it works, your SSH key is correctly configured.

@ezoer
Copy link

ezoer commented Feb 5, 2023

Thank you. I had almost everything working but had missed this part:

git remote set-url origin git@github.com:username/your-repository.git

@billh93
Copy link

billh93 commented Mar 13, 2023

This is really helpful. Thank you for putting the time in for the tut!

@SavSanta
Copy link

When troubleshooting a really unconventional setup of a local gitlab in our environment and with keys configured I found this command on StackOverflow helped me determine that a nonstandard private key/identity file (ie not named id_rsa, id_ecdsa, etc) in the .ssh folder caused the auth to gitlab to fail. The easy fix in my case was to copy the private key into an id_rsa file. Im sure there is an option to specify a specific identity file but I havent checked the manpages yet.

Anyway the verbosity alias for git I used is git -c core.sshCommand="ssh -v" push -u origin master

@synevir
Copy link

synevir commented Apr 12, 2023

Thanks a lot, xirixiz.
The native github doc with port 443 is sucks.

@ramithuh
Copy link

ramithuh commented May 6, 2023

Thanks, I was missing this as well!

Thank you. I had almost everything working but had missed this part:

git remote set-url origin git@github.com:username/your-repository.git

@softwareshinobi
Copy link

If you keep getting prompted for a username and password after following these instructions...

Clone your project using SSH and not HTTPS. (or i guess change the config file in the .git directory).

Then push.

@fanfansmilkyway
Copy link

Thank you very much.

@ferrum-the-beautiful
Copy link

thank you!

@Fat83dotcom
Copy link

Thank you!!!

@Khant-Nyar
Copy link

.

@JolienRietkerk
Copy link

If you keep getting prompted for a username and password after following these instructions...

Clone your project using SSH and not HTTPS. (or i guess change the config file in the .git directory).

Then push.

this helped, thanks!

@biswatig
Copy link

I was using https repo endpoints.. if your using SSH you need the SSH end points. use them when setting origin

You just SAVED my life ! Thanks a ton !

@phetdam
Copy link

phetdam commented Aug 13, 2023

Saved me--I only needed to run the git remote set-url. Thanks!

@princedikko
Copy link

did not solve my problems, github seems to be changing methods to the extent even full stack developers are complaining, i have done everything correctly but still error

@cmaxreilly
Copy link

You are a wonder, thank you!

@thomas15503
Copy link

I cant get past the test part. I type this in : ssh -T git@github.com

and it said Permission Denied (Public Key)

@phetdam
Copy link

phetdam commented Jan 15, 2024

I cant get past the test part. I type this in : ssh -T git@github.com

and it said Permission Denied (Public Key)

Don't forget to ensure the SSH agent is already running and that your GitHub private SSH key has been added to the agent. There is relevant GitHub documentation that provides more details on how to start the SSH agent in the background and add your private key. You can start the SSH agent in the background using eval "$(ssh-agent -s)" and then add the GitHub private key with

ssh-add /path/to/github/privatekey 

You will be prompted for the private key's password if it has one. After these steps, ssh -T git@github.com should work and give you

Hi <your username>! You've successfully authenticated, but GitHub does not provide shell access.

@thomas15503
Copy link

thomas15503 commented Jan 16, 2024 via email

@thomas15503
Copy link

thomas15503 commented Jan 16, 2024 via email

@phetdam
Copy link

phetdam commented Jan 17, 2024

It’s still not working. Idk what’s going on

What's the error you are getting? Is it still a permission issue with the public key?

Don't forget to also ensure that the SSH public key is already added to your GitHub account.

@thomas15503
Copy link

thomas15503 commented Jan 17, 2024 via email

@phetdam
Copy link

phetdam commented Jan 27, 2024

Sorry for the late response--have been recovering from an illness for nearly 2 weeks.

The public SSH key should be easy to copy via your browser... so far it seems like that's the problem. Unless you have figured it out already.

@jnsnco
Copy link

jnsnco commented Jun 19, 2024

the set-url part was the missing piece for me as well, thanks! one note, it seems that if the repo is under an organization, the command is slightly different:

git remote set-url origin git@github.com:organization/your-repo.git

@xirixiz
Copy link
Author

xirixiz commented Jun 20, 2024

the set-url part was the missing piece for me as well, thanks! one note, it seems that if the repo is under an organization, the command is slightly different:

git remote set-url origin git@github.com:organization/your-repo.git

Updated the gist with this command. Thanks!

@StripedBear
Copy link

thanks

@itq148
Copy link

itq148 commented Aug 6, 2024

Very nice and clear.

In case any of you have trouble, it's worth to check your origin url carefully.

I found my origin was set differently to his:
e.g. 'https://github.com//.git/'
by following default manual other than ssh related one.

However, origin must be like 'git://github.com:/reponame>.git'

@Teteration
Copy link

yesssssss, it works.
thanks.

@naresh1787
Copy link

I am unable to create a new repo from ssh. If I create an empty repo using gui and push to that repo it works fine.

I have set the remote url, tested the connection, everything works

[ansadm@kubemaster nkgittest]$ git push -u origin master
ERROR: Repository not found.
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

@gustavo-freitas0
Copy link

It worked for me. Thanks!

@petartzdravkov
Copy link

Thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment