How To Set Up SSH Keys on RHEL 8

ADVERTISEMENTS



Sample set up for our RHEL 8 server

I am a new RHEL 8 server sysadmin. How do I configure SSH public key-based authentication for RHEL (Red Hat Enterprise Linux) 8 server?Introduction – SSH is an acronym for secure shell. It is a suite of cryptographic network protocol. It allows users to log in and transfer files securely over the unsecure network such as the Internet. OpenSSH is an implementation of SSH protocol on RHEL 8. You can log in using RHEL 8 user and password account. However, OpenSSH project recommends log in using a combination of a private and public SSH keys.

You generate a key pair on your Linux/Unix/macOS desktop.

Place the public key on RHEL 8 server.

One can unlock public key using a private key stored on your desktop with the help of ssh command.

When both the public and private key correct you can log in without a password.

How do I set up SSH keys on RHEL 8 server?

Where,

The procedure to set up SSH key on Red Hat Enteprise Linux 8 server:

On your local desktop type:

ssh-keygen Install public key into remote RHEL 8 server using:

ssh-copy-id user@remote-RHEL8-server-ip Use ssh for password less login:

ssh user@remote-RHEL8-server-ip

Let us see all commands and steps in details.

How to create the ed25519 or RSA key pair

The syntax is:

ssh-keygen -t ed25519

ssh-keygen -t rsa

ssh-keygen -t rsa -b 4096 -f ~/.ssh/aws-lighsail.key -C "My AWS SSH Keys"

ssh-keygen -t ed25519 -f ~/.ssh/linode-usa-www1-vps.key -C "My Linode SSH Keys for www"

Where,

-t rsa OR -t ed25519 : Specifies the type of key to create. The possible values “dsa”, “ecdsa”, “ed25519”, or “rsa” for SSH protocol version 2.

OR : Specifies the type of key to create. The possible values “dsa”, “ecdsa”, “ed25519”, or “rsa” for SSH protocol version 2. -b 4096 : Specifies the number of bits in the key to create.

: Specifies the number of bits in the key to create. -f~/.ssh/aws-lighsail.key : Specifies the filename of the key file.

: Specifies the filename of the key file. -C -C "My AWS SSH Keys" : Set a new comment.

I am going type the following command on my Ubuntu desktop to create the key pair:

$ ssh-keygen -t ed25519



How to copy the public key

I strongly recommend that you set up a passphrase when prompted.

Now our key paid generated and stored in ~/.ssh/ directory. You must copy a public SSH key file named ~/.ssh/id_ed25519.pub (or ~/.ssh/id_rsa.pub if you created RSA key) to the RHEL 8 server. Try the ssh-copy-id command as follows:

$ ssh-copy-id -i ~/.ssh/fileNameHere.pub user@remote-RHEL8-server-ip

For example:

$ ssh-copy-id -i ~/.ssh/id_ed25519.pub vivek@192.168.2.211



How to log in using ssh and without a password

Now try logging into the machine, with the ssh command as follows:

$ ssh user@rhel-8-server

$ ssh vivek@192.168.2.211

You should be able to log in without a password. If you set up a passphrase, unlock it as follows for your current session so that you don’t have to enter it every time you run ssh, sftp, scp, rsync and other commands:

$ ssh-agent $SHELL

$ ssh-add

Optional settings for root user

Disable root user log in all together on RHEL 8 via ssh. Log in as root user on RHEL 8 and run following to add a user named vivek to wheel group:

# usermod -aG wheel vivek

# id vivek

Allows users in group wheel can use sudo command to run all commands on RHEL 8 server. Next disable root user login by adding the following line to sshd_config:

# vi /etc/ssh/sshd_config

Disable the password for root login and only allow ssh keys based login:

PermitRootLogin no ChallengeResponseAuthentication no PasswordAuthentication no UsePAM no

Save and close the file. Reload the ssh server:

# systemctl reload sshd.service

For more info see “Top 20 OpenSSH Server Best Security Practices“.

Conclusion

You learned how to set up and use SSH keys to manage your RHEL 8 based server. For more info see OpenSSH man pages here.