Skip to content

TechDirectArchive

Hands-on IT, Cloud, Security, Veeam & DevOps

  • Home
  • About
  • Advertise With US
  • Reviews
  • Contact
  • Toggle search form

How to perform SSH key-based authentication in Linux

Posted on 04/10/202003/09/2026 Christian By Christian No Comments on How to perform SSH key-based authentication in Linux
  1. Home
  2. Linux
  3. How to perform SSH key-based authentication in Linux
SSH key pair

SSH stands for Secure Shell and it is used to securely communicate between two host machines over an insecure network. It can be used for file transfer, accessing a remote machine application tunneling. Basically, SSH is the Linux equivalent for Windows Remote Desktop Protocol. Please see Synology Surveillance365: Cloud-Based Camera Management Without an On-Premises Surveillance Server, and Strategic breakdown and step by step guide to upgrading to VBR 13.1.

For SSH to work, you need to have Openssh installed on both the host machine as well as the remote machine. Openssh is normally installed by default on most Linux machines and if it is not on your machine, the package is included in your local repository. If that too, isn’t the case, just download the rpm file and have it installed on both systems.

PLEASE NOTE: As a rule of thumb, do not generate your ssh key as the root user because if you do as the root user, only the root user would be able to use that key.

Off we go…

Here are my system credentials: The remote machine (note the i.p address and the user name)

Linux authentication

The host machine (note the i.p address and the user name)

Public key authentication

On the remote machine, I have created a file called testfile for the purpose of this demonstration

Secure Shell access

GENERATE KEY PAIR IN THE HOST MACHINE

On the host machines’ terminal, type ssh-keygen and hit the Enter button. The outcome of this command will look the image below:

SSH key pair

By default, the ssh key is stored in the ~/.ssh directory and it is saved in a file called id_rsa. If you wish to change the file name, enter the name you want at the prompt and hit the Enter. Now, to perform SSH key-based authentication in Linux, it will prompt you for a passphrase/password. If you do not want to put a password, just ignore the prompt and hit the Enter button.

And as easy as that, you have successfully generated and stored your ssh key.

2. COPY THE KEY TO THE REMOTE MACHINE

Now copy the ssh key i.d to the remote machine with the command:

ssh-copy-id remote-username@remote-i.p-address
Linux authentication

For the first time you try to connect to the remote machine, it will ask if you are sure you want to proceed; type yes at the prompt.

If you have done everything well, you should get a confirmation message like the image below.

Secure Shell access

3. LOG INTO REMOTE MACHINE

At the terminal of the host machine, use the following command to log in remotely:

ssh remote-username@i.p-address

After you hit the Enter button, it should bring an authentication page as shown below

Linux authentication

Simply input the password/passphrase you used in creating the ssh key and you will have logged in successfully into the remote machine.

Well, the next two images show the testfile I created for this demonstration and its content.

Public key authentication
Secure Shell access

When you are done on the remote machine, just type exit at the terminal and you will be logged out of the remote machine and into your host machine.

SSHD CONFIGURATION FILE

Terminal output showing the status of the OpenSSH server daemon (sshd), indicating it is active and running, along with timestamps and the port number 22.

Furthermore, the SSH server listens on port 22. In this section, I will show you how to change that to perform SSH key-based authentication in Linux. The configuration file for the SSH Daemon is found in /etc/ssh/sshd_config, and a cat command should reveal something like the image below:

Terminal output displaying SSH server configuration file details, including instructions on modifying settings and the default port.

Now, this is a very long file and this is just a small portion of it.

Open this configuration file with your text editor and look for the line #Port 22. Below that line, add the Port number you want for the SSH service to listen on to perform SSH key-based authentication in Linux.

Screenshot of a terminal window displaying SSH configuration settings, highlighting the default port (22) and an alternative port (60122).

In addition, Now restart the sshd server with the systemctl command

Terminal display showing commands and logs related to OpenSSH server daemon operations, including starting, stopping, and server listening on port 60122.

However, if you have SELinux and firewall set up and running, you will get a permission denied error when you try to run any of the SSH services. Moreover, I don’t have them configured, but I will help you with the command to perform SSH key-based authentication in Linux.

To change the selinux label :

semanage port -a -t ssh_port_t -p tcp portnumber

for my demonstration, it will be :

semanage port –a –t ssh_port_t tcp 60122

To open the firewall to the new port

firewall-cmd –add-port=60122/tcp        [hit Enter]

firewall-cmd –add-port=60122/tcp –permanent   [hit Enter] 

CONCLUSION

On a parting note; from the configuration file, you can make other changes such as:

  1. However, Allow access to root user account
  2. Add other users access to the ssh key
  3. Add listening address e.t.c

I hope you have found this tutorial on how to perform SSH key-based authentication in Linux helpful and easy to understand.

Thank you for reading this post. Kindly share it with others.

  • Share on X (Opens in new window) X
  • Share on Reddit (Opens in new window) Reddit
  • Share on LinkedIn (Opens in new window) LinkedIn
  • Share on Facebook (Opens in new window) Facebook
  • Share on Pinterest (Opens in new window) Pinterest
  • Share on Tumblr (Opens in new window) Tumblr
  • Share on Telegram (Opens in new window) Telegram
  • Share on WhatsApp (Opens in new window) WhatsApp
  • Share on Mastodon (Opens in new window) Mastodon
  • Share on Bluesky (Opens in new window) Bluesky
Linux Tags:SSH

Post navigation

Previous Post: Unable to execute: The application GUID not found in the application list
Next Post: How to automatically resolve errors associated with failed dependencies

Related Posts

  • Slide2 1
    SU Authentication Fix: Sudo Permission Denied in Ubuntu Linux
  • ClamAV
    How to install and manage ClamAV and ClamTK on Ubuntu Linux Anti-Virus Solution
  • elasticsearch error feature
    Elasticsearch: How to stop systemd service start operation from timing out Linux
  • SystemUtilization
    Delivering System Utilization Report on a Linux based OS Linux
  • screenshot 2020 04 23 at 00.30.09
    How to mount a USB Drive in Linux Linux
  • Screenshot 2022 02 25 at 02.06.20
    How to install SAMBA file shares for Servers and Clients Linux

More Related Articles

runlevels How to check your current Runlevel in Linux Linux
MV command in Linux Rename or Move Files or Directories in Linux with Bash Terminal Linux
Docker Volumes Create and Mount Volume to Docker Container Containers
Rport RPORT the free and open source remote management tool Linux
fba7f screenshot 2019 04 15 at 18.33.30 File System Overview: How to decide on the right File System to use for your USB Linux
goland How to install Golang on a Linux System Linux

Leave a Reply Cancel reply

You must be logged in to post a comment.

Microsoft MVP

vexpert-badge-stars-5

Virtual Background

VEEAMLEGEND

Categories

Top 30 Sysadmin blog

veeaam100

Veeam Vanguard

  • Ping 3
    How to convert images from PNG to JPG on WordPress, Windows, and Mac JIRA|Confluence|Apps
  • 1723152 3cc3 2 750x405 1
    Cluster creation in Proxmox VE Virtualization
  • VBR 13.0.2.29 e1780480100260
    Fix Vulnerable Veeam Backup and Replication 13.0.1.2067 and Earlier Backup
  • powershell commands lede 1024x276 1
    PowerShell Remoting: Guide to Windows Management Instrumentation Scripts
  • microsoft confirms some pcs freeze after windows 10 2
    DHCP specific reference console icons Windows Server
  • image 30
    How to Fix “Insufficient System Resources Exist to Complete the Requested Service” error Windows
  • Netstat
    Network statistics: How to save netstat command output to a text Web Server
  • HyperV VM disk size increase
    How to Increase Disk Size in Hyper-V Virtualization

Subscribe to Blog via Email

Enter your email address to subscribe to this blog and receive notifications of new posts by email.

Join 1,745 other subscribers
  • RSS - Posts
  • RSS - Comments
  • About
  • Authors
  • Write for us
  • Contact
  • Advertise with us
  • General Terms and Conditions
  • Privacy policy
  • Feedly
  • Telegram
  • Youtube
  • Facebook
  • Instagram
  • LinkedIn
  • Tumblr
  • Pinterest
  • Twitter
  • mastodon
  • Bsky

Tags

Active Directory Azure Bitlocker Microsoft Windows PowerShell WDS Windows 10 Windows 11 Windows Deployment Services Windows Server 2016

Copyright © 2026 TechDirectArchive

Loading Comments...

You must be logged in to post a comment.