It sounds like you’re looking to set up SSH key-based authentication! This is a great way to log into your Linux VM without repeatedly entering your password. Here’s a short blog post you can use:
Tired of typing your password every time you SSH into your Linux virtual machine from your Linux host? There’s a better way! By leveraging SSH key-based authentication, you can log in instantly and securely, saving you time and hassle.
This method relies on a pair of cryptographic keys: a private key that stays securely on your host machine, and a public key that you place on your VM. When you attempt to connect, your host proves its identity using the private key, and if it matches the public key on the VM, you’re granted access – no password needed!
Here’s how to set it up:
Step 1: Generate Your SSH Key Pair (on your Linux Host)
First, you need to create your SSH keys. Open a terminal on your Linux host machine and run the following command:
Bash
ssh-keygen -t rsa -b 4096
ssh-keygen
: The command to generate SSH keys.-t rsa
: Specifies the RSA algorithm for the key.-b 4096
: Sets the key length to 4096 bits, which is highly secure.
You’ll be prompted to enter a file in which to save the key. The default (~/.ssh/id_rsa
) is usually fine. You’ll also be asked for a passphrase. For maximum convenience (no password prompt), leave the passphrase empty. If you want an extra layer of security and don’t mind typing a passphrase once per session, you can set one.
This will generate two files in your ~/.ssh/
directory:
id_rsa
: Your private key (keep this file absolutely secret!).id_rsa.pub
: Your public key.
Step 2: Copy Your Public Key to Your Linux VM
Now, you need to get your public key onto your Linux VM. The easiest way is to use ssh-copy-id
:
Bash
ssh-copy-id username@your_vm_ip_address
username
: Replace this with your actual username on the Linux VM.your_vm_ip_address
: Replace this with the IP address or hostname of your Linux VM.
The first time you run this, you’ll be prompted for your VM’s password. After successful authentication, ssh-copy-id
will automatically place your public key (id_rsa.pub
) into the ~/.ssh/authorized_keys
file on your VM.
If ssh-copy-id
isn’t available or you prefer to do it manually:
Bash
cat ~/.ssh/id_rsa.pub | ssh username@your_vm_ip_address "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
You will be prompted for your VM’s password for this command.
Step 3: Log In Without a Password!
That’s it! Now, try logging into your VM:
Bash
ssh username@your_vm_ip_address
If everything is set up correctly, you should be logged in instantly without being prompted for a password!
Troubleshooting Tips:
- Permissions are crucial: Ensure your
~/.ssh
directory on the VM has700
permissions (drwx------
) and theauthorized_keys
file has600
permissions (-rw-------
). - Check SSH service: Make sure the SSH server is running on your VM (
sudo systemctl status sshd
). - Firewall: Ensure your VM’s firewall isn’t blocking SSH connections (port 22 by default).
Enjoy your newfound password-free SSH convenience!