How to Set Up and Use SSH Key Authentication on Linux
Secure Shell (SSH) is a widely used protocol for secure remote access and management of Linux servers. By default, SSH authentication relies on passwords, which can be vulnerable to brute-force attacks. SSH key authentication is a more secure and convenient method that uses public-key cryptography to authenticate users. In this guide, we will show you how to set up and use SSH key authentication on your Linux system.
Step 1: Open Terminal
Open the terminal by pressing Ctrl + Alt + T on your keyboard or by searching for it in the applications menu.
Step 2: Generate SSH Key Pair
First, you need to generate an SSH key pair, which consists of a private key and a public key. To generate a new key pair, run the following command:
ssh-keygen -t ed25519 -C “firstname.lastname@example.org”
This command generates a new Ed25519 key pair, which is considered more secure and efficient than the older RSA key type. You can replace email@example.com with your actual email address or any other identifier.
When prompted, choose a location to save the keys (default is ~/.ssh/id_ed25519 for the private key and ~/.ssh/id_ed25519.pub for the public key) and set a passphrase for added security. Make sure to keep your private key safe and secret, as it’s used to authenticate your identity.
Step 3: Copy Public Key to Remote Server
To set up SSH key authentication, you need to copy your public key to the remote server’s authorized_keys file. You can do this using the ssh-copy-id command:
ssh-copy-id -i ~/.ssh/id_ed25519.pub username@remote_server_ip
Replace username with your remote server’s username and remote_server_ip with the IP address or domain of the remote server. If prompted, enter your remote server’s password to complete the process.
Step 4: Test SSH Key Authentication
Now that your public key is on the remote server, you can test SSH key authentication by connecting to the server:
ssh -i ~/.ssh/id_ed25519 username@remote_server_ip
If the setup is successful, you will be logged into the remote server without entering a password. However, if you set a passphrase during key generation, you’ll be prompted to enter it.
Step 5 (Optional): Disable Password Authentication
For added security, you can disable password-based authentication on the remote server, allowing only key-based authentication. To do this, edit the SSH configuration file on the remote server:
sudo nano /etc/ssh/sshd_config
Find the line that contains #PasswordAuthentication yes, uncomment it by removing the #, and change yes to no:
Save the file and restart the SSH service:
sudo systemctl restart sshd
Now, only users with authorized SSH keys can access the remote server.
Setting up and using SSH key authentication on Linux is a simple and effective way to enhance the security of your remote connections. By following the steps in this guide, you can create an SSH key pair, set up key-based authentication, and optionally disable password authentication. This will help you protect your Linux system from unauthorized access and make remote management more convenient.
Please Leave Feedback and Corrections in the Comments
More to Explore
How to Set Up and Use a Basic Firewall on Linux
UFW (Uncomplicated Firewall) is a user-friendly front-end for managing iptables firewall rules on Linux systems.
How to Set Up a VPN Server on Linux
A VPN (Virtual Private Network) provides a secure, encrypted connection between your devices and the internet.
How to Install and Use a Terminal Multiplexer on Linux
A terminal multiplexer is a powerful command-line utility that enables users to manage multiple terminal sessions.
How to Set Up a Basic Samba Server on Linux
Samba is a popular open-source software suite that provides seamless file and print services to SMB/CIFS clients.
How to Create and Manage Users and Groups on Linux
User and group management is an essential aspect of maintaining a secure and organized Linux system.
How to Install and Configure a LAMP Stack on Linux
A LAMP stack is a popular software bundle consisting of Linux, Apache, MySQL, and PHP, used for hosting and deploying web applications.
How to Create and Manage Cron Jobs on Linux
Cron jobs are a feature on Linux that enables users to automate repetitive tasks by scheduling scripts or commands to run at specific intervals.
What is Kubernetes?
Kubernetes is an open-source container orchestration platform that automates the management of containerized applications.
How to Access Google Drive on Ubuntu
Google Drive has become an essential tool for many users, allowing them to store and access files in the cloud and collaborate with others.