How to Generate an SSH Key on Linux


Secure Shell (SSH) is a cryptographic network protocol that allows secure communication between a client and a server over an unsecured network. SSH is commonly used for remote server administration, file transfers, and other network-related tasks. One of the key features of SSH is its ability to use public-key cryptography for authentication, which enhances security by eliminating the need to send passwords over the network.

In this blog post, we will walk you through the process of generating an SSH key pair on a Linux system. An SSH key pair consists of a private key and a public key. The private key is kept secret and stored securely on the client machine, while the public key can be shared with any server you want to connect to.


To follow along with this tutorial, you will need:

  • A Linux system with SSH installed (most Linux distributions come with SSH preinstalled).
  • Access to a terminal or command-line interface.

Step 1: Open a Terminal

Open a terminal window on your Linux system. You can do this by searching for “terminal” in your system’s application menu or by using a keyboard shortcut (e.g., Ctrl + Alt + T on Ubuntu).

Step 2: Generate the SSH Key Pair

To generate an SSH key pair, use the ssh-keygen command. By default, this command generates an RSA key pair with a key length of 3072 bits. You can specify a different key type and key length if needed. Here’s how to generate an RSA key pair with the default settings:


When prompted, you can press Enter to accept the default file location (~/.ssh/id_rsa) or specify a different file path. You will also be prompted to enter a passphrase, which is optional but recommended for added security. If you choose to use a passphrase, you will need to enter it each time you use the private key.

Step 3: Check the Generated SSH Key Pair

After running the ssh-keygen command, you should see output similar to the following:

Generating public/private rsa key pair.
Enter file in which to save the key (/home/username/.ssh/id_rsa):
Created directory '/home/username/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/username/.ssh/id_rsa.
Your public key has been saved in /home/username/.ssh/
The key fingerprint is:
SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx username@hostname
The key's randomart image is:
+---[RSA 3072]----+
|      .o..       |
|     . .o.       |
|      . .+.      |
|       .o+       |
|      .oS.       |
|     .o+..       |
|    .o+..        |
|   .o+..         |
|  .o+..          |

The private key is saved in the file specified earlier (e.g., ~/.ssh/id_rsa), and the public key is saved in a file with the same name but with a .pub extension (e.g., ~/.ssh/

Step 4: Copy the Public Key to the Remote Server

To use your newly generated SSH key pair for authentication, you need to copy the public key to the remote server’s authorized_keys file. You can do this using the ssh-copy-id command:

ssh-copy-id username@remote_server

Replace username with your username on the

remote server, and remote_server with the hostname or IP address of the server you want to connect to. You will be prompted to enter your password for the remote server. Once the public key is copied, you will be able to use SSH key-based authentication for future connections.

Step 5: Test the SSH Key-Based Authentication

To test that SSH key-based authentication is working, try connecting to the remote server using the ssh command:

ssh username@remote_server

If you set a passphrase for your private key, you will be prompted to enter it. If everything is set up correctly, you should be logged in to the remote server without being prompted for your password.


In this blog post, we covered the process of generating an SSH key pair on a Linux system and using it for authentication when connecting to a remote server. SSH key-based authentication is a secure and convenient way to access remote servers without having to remember and enter passwords.

By using SSH keys, you can enhance the security of your remote connections and simplify the authentication process. Whether you are a system administrator managing multiple servers or a developer working on remote projects, SSH keys are an essential tool in your toolbox.

We hope you found this tutorial helpful, and we encourage you to explore the many other features and capabilities of SSH.

A Special Offer

But wait, that’s not all!

If you want to become a true Linux ninja, you’ve got to check out my new e-book called “Shell Samurai – Master the Linux Command Line.” 📚🥷

This e-book is jam-packed with tips, tricks, and techniques that will help you master the Linux command-line like a samurai.

Whether you’re a beginner or an experienced user, Shell Samurai has something for every Linux user.

What are you waiting for?

Grab your copy of “Shell Samurai – Master the Linux Command Line” today and start your journey to becoming a Linux command line master!

Click the link below to grab your copy, and use coupon code KERNEL for 20% off:

Leave a Comment