Using SSH keys in Linux

Revision as of 14:22, 10 November 2016 by Fuzzybot (talk | contribs) (Importing a new version from external source)
Other languages:

Creating a Key Pair

To create a key pair use the ssh-keygen command. Before running the command check to see if you might already have a key pair. Keys are located in the .ssh/ directory in your home directory. The default key names are id_rsa for the private key and id_rsa.pub for the public key. The command

ssh-keygen -b 2048 -t rsa

will generate output similar to the following

Generating public/private rsa key pair.
Enter file in which to save the key (/home/ubuntu/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/ubuntu/.ssh/id_rsa.
Your public key has been saved in /home/ubuntu/.ssh/id_rsa.pub.
The key fingerprint is:
ef:87:b5:b1:4d:7e:69:95:3f:62:f5:0d:c0:7b:f1:5e ubuntu@test-key
The key's randomart image is:
+--[ RSA 2048]----+
|                 |
|                 |
|           .     |
|            o .  |
|        S    o o.|
|         .  + +oE|
|          .o O.oB|
|         .. +oo+*|
|          ... o..|
+-----------------+

when prompted you should enter a passphrase. If you already have a key pair saved with the default names you may wish to enter a file name for the saved keys so as not to overwrite an existing key pair.

Connecting using a Key Pair

Once your key pair has been created copy the public key (the /home/ubuntu/.ssh/id_rsa.pub key file in the above on your local machine) to the /home/USERNAME/.ssh/authorized_keys file on the server you wish to connect to. If you had to create the file /home/USERNAME/.ssh/authorized_keys ensure the file authorize_keys and directory .ssh have the correct permissions with chmod 600 ~/.ssh/authorized_keys and chmod 700 ~/.ssh respectively.

Finally test the new key by sshing to the remote machine from the local machine with

ssh -i /home/ubuntu/.ssh/id_rsa USERNAME@ADDRESS

where /home/ubuntu/.ssh/id_rsa specifies your private key file and USERNAME is the user name on the remote machine, and ADDRESS is the address of the remote machine.