Enable SSH Public Key Authentication
Configuring your VM to use SSH Key Auth
This article describes the procedure to set up a Secure Shell (SSH) public key authentication.
Setting up the SSH Key
-
Ensure you have the Public part of you SSH key ready - that's the contents of the file id_rsa.pub that you might have generated in https://docs.rackspace.com/docs/connecting-to-a-server-using-ssh-on-linux-or-mac-os.
-
Log in to the server.
-
Verify that the user exists:
getent passwd <username> -
Look up the value assigned to the AuthorizedKeysFile parameter within /etc/ssh/sshd_config to determine the file where the key is stored:
grep AuthorizedKeysFile /etc/ssh/sshd_configNote: The default location is ~/.ssh/authorized_keys within the user's default home directory.
-
Switch to the user's home directory:
cd /home/<username> -
Check permission levels for the .ssh/ directory. It should have
0700permissions and be owned by the user.ls -hald .ssha. If the directory does not exist, create it and set the permissions to
0700:mkdir -m 700 .sshb. If the directory exists, but ownership and permissions are incorrect, correct it using:
chmod 700 .ssh/ chown -R username:username .ssh -
Switch to .ssh/ directory and edit the authorized_keys file:
cd .ssh/ vim authorized_keys -
Add the SSH Public Key to the end of the authorized_keys file:
ssh-rsa AAAThisIsAnExamplePublicPortionOfAPublicPrivateKeyPairIsMuchShorterThanARealOne/1/2/3/4/5/6/7/8/9/0t05WFE= [email protected] -
Check and update the authorized_keys file permission to
600and ensure proper ownership of the file:ls -hal authorized_keys chmod 600 authorized_keys chown -R username:username authorized_keys
Disable Password Authentication
If you want all users to log in with public keys and not passwords, you can disable password authentication.
IMPORTANT: Disabling password authentication locks out all users who used a password to access the server if SSH authentication is not already configured for their account.
-
Create a backup of the sshd_config file before making any changes:
mkdir /home/username/backup cp /etc/ssh/sshd_config /home/username/backup/sshd_config.bak -
Edit the sshd_config file:
vim /etc/ssh/sshd_config -
Find the PubkeyAuthentication parameter and set it to yes. If the line is commented, remove any comment indicators (
#). -
Find the PasswordAuthentication parameter within the same file and set it to
no. -
Save the changes to the file and exit the file.
-
Check the syntax by using
sshd -t. If there are no errors, reloadsshd:service sshd reload
Additional notes:
- The private key file on your local workstation (client-side) should have permissions set to
600, and the .ssh directory should have the permissions set to700. The authorized_keys files also work with644permissions, but600is more secure.
Updated 4 months ago
