Securely Access Remote Machines with SSH
Remote machine access has always fascinated me. The idea of controlling a computer halfway across the world from a terminal or smartphone feels like magic. But behind that magic lies one critical concern: security.
Without proper security, remote connections are vulnerable. Hackers could intercept unencrypted data, steal access, or even damage your system. Thankfully, there's a robust and secure method widely used across the tech world: SSH (Secure Shell).
What is SSH?
SSH is a secure communication protocol used to access and manage remote machines over a network. Unlike traditional protocols, SSH encrypts all data sent between you and the remote system.
SSH becomes even more powerful when paired with SSH keys, which are a more secure alternative to passwords.
Understanding SSH Keys
SSH keys work in pairs:
- Public key: Shared with remote machines
- Private key: Stays safe on your computer
When you connect, the remote machine checks if your private key matches the public key it has. If it matches, access is granted. No password is needed.
Generate an SSH Key Pair
Step 1: Open Your Terminal
On Linux or macOS, use the built-in terminal. On Windows, use Git Bash or WSL (Windows Subsystem for Linux).
Step 2: Run the Key Generation Command
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
This creates a new RSA key with 4096 bits. The email is just a label for identification.
Step 3: Choose Save Location
You’ll be prompted to save the key:
Enter file in which to save the key (/home/user/.ssh/id_rsa):
Press Enter to accept the default.
Using the SSH Agent (Optional but Helpful)
The SSH agent stores your decrypted private key in memory so that you don’t have to enter your passphrase each time.
Start it:
eval "$(ssh-agent -s)"
Add your key:
ssh-add ~/.ssh/id_rsa
If you saved your key with a different name, adjust the path accordingly.
Add Your Public Key to a Remote Server
There are two main methods: manual and automatic.
Manual Method
Step 1: Display Your Public Key
cat ~/.ssh/id_rsa.pub
Step 2: Copy the Key
Copy the output to your clipboard.
Step 3: Log In to the Remote Server
ssh username@remote_server
Then, on the remote machine:
mkdir -p ~/.ssh
nano ~/.ssh/authorized_keys
Paste the public key into the file, save, and exit. Ensure the right permissions:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
Automatic Method: Using ssh-copy-id
This is the simplest way to install your public key on a remote server.
Step 1: Run the Command
ssh-copy-id username@remote_server
Step 2: Enter Your Password Once
You’ll be prompted for the remote user's password. ssh-copy-id will:
- Copy your public key to the server
- Create
~/.sshandauthorized_keysif needed - Set proper file permissions
After this, you won’t need to enter a password again.
Using a Custom Key
If you have a non-default key, specify it like this:
ssh-copy-id -i ~/.ssh/my_custom_key.pub username@remote_server
Log In Without a Password
Now that your public key is set up, you can log in with:
ssh username@remote_server
Run a Command on the Remote Server
You can also execute a command remotely without logging in fully:
ssh username@remote_server 'ls -lh /var/log'
Conclusion
SSH with key-based authentication is one of the best ways to secure remote access:
- No need to type your password
- Stronger protection than passwords alone
- Faster and safer access to your machines
Whether you're managing servers, deploying apps, or running remote tasks, mastering SSH keys and ssh-copy-id is an essential step in leveling up your tech toolkit.

Comments