Programster's Blog

Tutorials focusing on Linux, programming, and open-source

Ubuntu - Sharing SSH Keys

SSH

Sharing keys on Ubuntu is as easy as:

ssh-copy-id user@hostname.domain.com

If you want to use a specific key, then use the following

ssh-copy-id -i [PUBLIC KEY FILE] user@hostname.domain.com

If you want to use a specific key and a specific port then use the following

ssh-copy-id \
  -p [PORT NUMBER] \
  -i [PUBLIC KEY FILE] user@hostname.domain.com

If you don't already have an identity, an error will pop up and you will need to run the following before retrying.

ssh-keygen

This grants yourself non-password access to the remote machine, not the other way around!

Always use a passphrase on your keys to prevent them being useful to malicious users who compromise your servers. Tools like ansible will realize if a key requires a passphrase to use and will automatically prompt you.

Manual Method

Sometimes you need to do things manually, such as when you can only use a key to log into the server and need to add another key. In such situations, just copy the public key (which should look something like below)

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCpPhKCzJUS6RGRza+FudimGKR2RILtShMyN1Gsd0V7r3H1vJ2WwwgMGjUQmow6IyFEFH+1TlbCGDTGxRA82G5+vW3NCbbtkTXyEJsVQ7/QkLqnQL4++BRLhJ5UAzKv84Ohw45VeJPVtW/gAqvB7r4+vcRNPrW3dRW8TVgF9fAi5RdacDXBBGFkSE1IA5mAMqDmiXryn4SlqFqeS4n/jsEFsCmOPo1S67xqp/QsVYyZHjS9jFwxxLuSj/7VT0QuQcU1Q7QWifGM4Rdj8jIboxEoM59Ws9GpeJK94UUX+L8vg8QUp+wiEdQnrzyaTVbu0NtPUdsmynNcM06XWM74E2bT stuart@stu-home-office

... and append it into the $HOME/.ssh/authorized_keys of the user that you want to use the key to login as. Note that this is a single line that will look like an entire paragraph with the wrapping. The bit at the end such as stuart@stu-home-office is just an identifier that you can change to be something more memorable. E.g. to let you know what other servers/users are granted access to the server so that you can remove them at a later date and not accidentally remove the wrong key.

Manual Removal

Removing an SSH key from being able to access the server is as easy as removing the appropriate line from the .ssh/authorized_keys file (or commenting it out with a #), and then restarting the ssh service with:

sudo service sshd restart

I did this recently and thought I was still able to access the server using the old key. It turned out that gnome-keyring was just automatically using the new key. You may wish to remove gnome-keyring to save confusion by running sudo apt remove gnome-keyring.

References

Last updated: 29th July 2021
First published: 16th August 2018