Skip to content

Instantly share code, notes, and snippets.

@developius
Last active July 14, 2024 15:45
Show Gist options
  • Save developius/c81f021eb5c5916013dc to your computer and use it in GitHub Desktop.
Save developius/c81f021eb5c5916013dc to your computer and use it in GitHub Desktop.
Setup SSH keys for use with GitHub/GitLab/BitBucket etc

Create a new repository, or reuse an existing one.

Generate a new SSH key:

ssh-keygen -t rsa -C "[email protected]"

Copy the contents of the file ~/.ssh/id_rsa.pub to your SSH keys in your GitHub account settings (https://github.com/settings/keys).

Test SSH key:

$ ssh -T [email protected]
Hi developius! You've successfully authenticated, but GitHub does not provide shell access.

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

git remote set-url origin [email protected]:username/your-repository.git

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

$ git commit -am "Update README.md"
$ git push

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

@curbengh
Copy link

curbengh commented Oct 4, 2019

If anyone using this in CI or script with set -e enabled, do note ssh -T [email protected] exits with non-zero, which prevent subsequent commands (like git push) from running. You can force exit code zero by using,

$ ssh -T [email protected] || :

Or in YML,

  - ssh -T [email protected] || ":"

@wasit-shafi
Copy link

tnks..

@ajsaraujo
Copy link

This could have a link to a tutorial showing how to setup the SSH keys on your account, had to search this elsewhere. Anyways, thanks for the gist!

@janek
Copy link

janek commented Dec 10, 2020

Very useful! Maybe consider including the link to https://github.com/settings/keys? That would make the instructions even quicker to use, and the url will probably remain the same for a while

@developius
Copy link
Author

@ajsaraujo @janek done 😄

@punam-shinde
Copy link

git remote set-url origin [email protected]:User name /repo.git
this command really works me. thank you.

@hspeight
Copy link

THX

@chandrumani
Copy link

Easiest way is to use the command line:

Thanks, it worked.

@argiepiano
Copy link

Thanks for the directions. I'm trying this in a shared hosting account. When I try testing the key with ssh -T [email protected] I get:
/bin/sh: /usr/bin/sss_ssh_knownhostsproxy: No such file or directory
ssh_exchange_identification: Connection closed by remote host

Can you help? Is it not possible to set up a SSH key in shared hosting shell?

@developius
Copy link
Author

@argiepiano it looks like your server doesn't have the ssh command configured correctly - you may need to get in touch with your hosting provider as sss_ssh_knownhostsproxy looks like something weird on their end.

@ayyzenn
Copy link

ayyzenn commented Sep 9, 2021

Thanks for the guidance but after following the steps it is still asking for the username and password with pushing.

@muX1337
Copy link

muX1337 commented Nov 4, 2021

Thanks for the guidance but after following the steps it is still asking for the username and password with pushing.

had the same issue. It helped when I switched to the ssh and not https, Moreover I've added my public-key not to my account settings instead I've added my key to the repo with special rights, I've just created my repo so with a fix new git clone everything was fine but if you had bigger stuff and some branches etc. maybe script this will help https://gist.github.com/m14t/3056747

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