DEV Community

Cover image for ssh - a treat for your GitHub
Abhishek S. Sharma
Abhishek S. Sharma

Posted on

ssh - a treat for your GitHub

ssh commands

ssh creation

  1. ssh key should be in /home/.ssh folder
  2. to generate ssh key-


  • the command will ask you the name of the file, you can enter it. Let say, you named it "secure-shell" and follow the next instructions:
  1. It will create two files in the same folder one is a public key file with extension .pub file and the other one is a private file. In our case, it will create "" and "secure-shell"

  2. It needs your attention,

secure-shell - never share this with anybody -to be share with a remote server that you want to excess

  • When you have multiple private keys then you have to add a specific key to your main identity.

eval $(ssh-agent)
ssh-add ~/.ssh/secure-shell

difference ssh-add /.ssh/secure-shell V/S ssh -i /.ssh/secure-shell ?

add will set the identity of your system for a current pointed ssh key for every commit, whether -i will set temp identity pass key(ssh key) in case you have different ssh keys added to the different remote workspaces.

GitHub access

  1. write the following command to view the ssh-key (we will use secure-shell i.e. our key name). Please access the directory where your ssh key present. > cat .ssh/
  2. The above command lists a key, copy it!!
  3. Goto git account, setting > SSH and GPG keys > New ssh key and paste here
  4. that it
  5. Remember, you need to generate two ssh keys to access two different git accounts. Each git account will require a unique ssh key to be added. It is a good practice.

Remote access

  1. On your local machine > cat .ssh/
  2. The above command lists a key, copy it!!
  3. go to the remote machine and write following command > sudo vi .ssh/authorized_key
  4. Press i button to write
  5. paste your key here and press ESC button
  6. Write :wq

NOTE - how to know which ssh is currently added

ssh-add -l

It's pretty simple, right !!

Top comments (14)

ferricoxide profile image
Thomas H Jones II

An easier method for copying your public key to a remote host is to use the ssh-copy-id command.

Also, if you have multiple SSH keys on your keyring, you can create scenarios where the git-remote will give you a "too many authentication failures" error due to the ssh-agent presenting the wrong key(s) prior to the correct key.

dlintott profile image
Daniel Lintott

Using the SSH config file (~/.ssh/config) can come in handy here.

Specify the remote server you are connecting to using the Hoststatement.

Within the host statement you can specify the options that differ from the defaults for that host including but not limited to username and identity.

    User fred
    Identity File ~/.ssh/example-key

Then when you connect to the server it will use the options you have specified. On some OSes this also provides auto-completion for the SSH command.

The SSH Config Man page has all the options you can specify

krzysztow profile image

I do second ssh-copy-id. Got to know about it few weeks ago and it's such a helper!

kovah profile image
Kevin Woblick

You should consider using modern ECDSA SSH keys instead of the old RSA keys. They are more secure and supported on all modern systems.
Details about ECDSA and how to generate them can be found in my article.

donaldkbrown profile image
Donald Brown

If you don't want to read a whole article to figure out how to generate this type of key, simply add -t ecdsa to the ssh-keygen command. The why in the article, though, is still a good read.

samvdkris profile image

Ackchually, Ed25519 is now the go-to recommended algorithm

donaldkbrown profile image
Donald Brown

You should not use sudo when modifying authorised keys. If the file does not already exist, it will set the wrong permissions. Authorised keys is a strictly user file and should only ever be accessed by the user that owns it. Overuse of sudo is a dangerous trend that should not be encouraged.

kartik_saxena14 profile image
Kartik Saxena

Nice work..

urkary profile image

I do not use ssh-agent and when using 2 GitHub accounts I use the GIT_SSH_COMMAND variable to specify the key to use. Not sure of this is right or the best way to do it, but it has been useful to me so far

nishikaushik2 profile image
Nishi kaushik

Very useful content 👍

rashigu82610047 profile image
Rashi Gupta

Thank you for sharing and clearing the concepts of SSH.

itdeepa profile image
Deepa khandelwal

Very useful content👌👌

dimon222 profile image
Dmitry Romanenko

Or you can use my automation in python for doing all this listed :)

shubham2296 profile image
Shubham Kumar

Very useful... thanks for sharing!!