How to create SSH Keys in Ubuntu / Linux ?

SSH (Secure Shell) keys are a secure and convenient way to authenticate to remote servers without the need to enter a password each time. They are widely used for system administration, secure file transfers, and remote logins. This guide will walk you through the process of creating SSH keys in Ubuntu/Linux.

What are SSH Keys?

SSH keys are a pair of cryptographic keys used to authenticate a user to an SSH server. The key pair consists of a private key, which is kept secure on your local machine, and a public key, which is placed on the remote server. When you attempt to log in, the server uses the public key to verify the corresponding private key, allowing access without a password.

Benefits of Using SSH Keys:

  • Security: Stronger authentication compared to passwords.
  • Convenience: No need to enter a password for each login.
  • Automation: Useful for automated scripts and deployments.

Step-by-Step Guide to Creating SSH Keys

1. Check for Existing SSH Keys

Before generating a new SSH key pair, it’s a good idea to check if you already have one. Open a terminal and enter:

ls -al ~/.ssh

If you see files named id_rsa and id_rsa.pub (or similar), you already have an SSH key pair. If you want to create a new one, you can either back up the existing keys or overwrite them.

2. Generate a New SSH Key Pair

To generate a new SSH key pair, use the ssh-keygen command. This command creates a new SSH key using the RSA algorithm by default, but you can specify other algorithms if needed.

Enter the following command in your terminal:

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
  • -t rsa: Specifies the type of key to create, in this case, RSA.
  • -b 4096: Specifies the number of bits in the key, which determines its strength. A higher number means a more secure key.
  • -C “your_email@example.com”: Adds a label to the key, typically your email address.

3. Save the SSH Key Pair

After running the ssh-keygen command, you’ll be prompted to choose a location to save the generated keys. By default, it saves to ~/.ssh/id_rsa. You can press Enter to accept the default location or specify a different path.

Enter file in which to save the key (/home/your_username/.ssh/id_rsa):

4. Secure Your SSH Key with a Passphrase

Next, you’ll be asked to enter a passphrase. This is an optional security measure that adds an extra layer of protection. If you choose to use a passphrase, you’ll need to enter it each time you use the key. If you prefer not to use a passphrase, simply press Enter.

Enter passphrase (empty for no passphrase):
Enter same passphrase again:

5. Copy the Public Key to the Remote Server

To use your new SSH key for authentication, you need to copy the public key to the remote server. You can do this manually or use the ssh-copy-id utility.

Using ssh-copy-id:

ssh-copy-id username@remote_host

Replace username with your remote server username and remote_host with the server’s address. You’ll be prompted to enter the remote user’s password. The utility will then copy your public key to the server.

Manually Copying the Key:

If you prefer to do it manually, open the public key file (~/.ssh/id_rsa.pub) and copy its contents. Then, log in to the remote server and append the key to the ~/.ssh/authorized_keys file:

ssh username@remote_host
mkdir -p ~/.ssh
echo "your_public_key_contents" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

6. Adjust SSH Configurations (Optional)

You can simplify your SSH connections by adding configurations to the ~/.ssh/config file on your local machine. This allows you to set up shortcuts for your SSH connections.

nano ~/.ssh/config

Add the following configuration:

Host your_shortcut_name
    HostName remote_host
    User username
    IdentityFile ~/.ssh/id_rsa

Save and exit the file. Now you can connect to your remote server using the shortcut name:

ssh your_shortcut_name

7. Test Your SSH Key Authentication

Finally, test your SSH key authentication by connecting to the remote server:

ssh username@remote_host

If everything is set up correctly, you should be able to log in without being prompted for a password.

Creating SSH keys in Ubuntu/Linux enhances security and convenience for remote connections. By following the steps outlined in this guide, you can generate a new SSH key pair, copy it to your remote server, and streamline your SSH authentication process. Whether you’re managing servers, deploying applications, or automating tasks, SSH keys provide a robust solution for secure access.

Watch the video on Youtube

Leave a Comment