DEV Community

Cover image for SSH Deep Dive for Secure Server Access
Pallavi
Pallavi

Posted on

SSH Deep Dive for Secure Server Access

****## A Deep Dive Into How SSH Works (Secure Shell Explained)

If you work in DevOps, Cloud, Backend Development, or Linux administration, SSH is one of the most important tools you use daily.

Every time you deploy an app, log into a cloud VM, or debug a production server — you’re using SSH.

Let’s break it down clearly.

What is SSH?

SSH (Secure Shell) is a cryptographic network protocol that allows secure remote access to systems over an unsecured network.

In simple terms:

SSH lets you securely control a remote server from your local machine.

It replaced Telnet because Telnet sends data in plain text — SSH encrypts everything.

SSH is widely used in:

✔ DevOps
✔ Cloud computing
✔ Linux server management
✔ CI/CD pipelines
✔ Git deployments

Default SSH port: 22

⚙ How SSH Works (Step-by-Step)

SSH follows a client-server model and combines encryption with authentication.

When you run:

ssh user@server_ip

Here’s what happens:

✔ Client sends connection request
✔ Server sends its public key
✔ Client verifies server authenticity
✔ Encryption keys are negotiated
✔ Secure session starts
✔ All communication becomes encrypted

From this point forward, every command and response is secure.

🔑 SSH Authentication Methods

1. Password Authentication

ssh username@server_ip
Enter fullscreen mode Exit fullscreen mode

Simple but less secure.
If password login is enabled, attackers can attempt brute-force attacks.

2. Key-Based Authentication (Recommended)

This is the production standard.

Generate a key pair:

ssh-keygen -t rsa -b 4096
Enter fullscreen mode Exit fullscreen mode

This creates:

✔ Private key → Keep secret
✔ Public key → Upload to server

Copy your public key:

ssh-copy-id user@server_ip

Now log in without password:

ssh user@server_ip

This method is much more secure and used in cloud environments.

SSH Configuration

Main SSH configuration file:

/etc/ssh/sshd_config
Enter fullscreen mode Exit fullscreen mode

Important security settings:

PermitRootLogin no
PasswordAuthentication no
Enter fullscreen mode Exit fullscreen mode

Best practices:

✔ Disable root login
✔ Disable password authentication
✔ Use SSH keys only
✔ Change default port
✔ Configure firewall rules

SSH Security Best Practices

To secure your SSH server:

✔ Use key-based authentication only
✔ Disable root login
✔ Change default port 22
✔ Use strong passphrases
✔ Enable firewall rules
✔ Install Fail2Ban
✔ Rotate SSH keys regularly

Most SSH breaches happen because of weak configuration — not SSH itself.

SSH Tunneling (Port Forwarding)

SSH can create encrypted tunnels to securely forward traffic.

Local Port Forwarding
ssh -L 8080:localhost:80 user@server

This forwards local port 8080 to remote port 80 securely.

Remote Port Forwarding
ssh -R 9090:localhost:3000 user@server

Common use cases:

✔ Secure database access
✔ Accessing private services
✔ Debugging internal applications

SSH in DevOps & Cloud

SSH is essential for:

✔ Deploying applications
✔ Managing AWS EC2 instances
✔ Running remote commands
✔ Debugging production servers
✔ Automating CI/CD pipelines

Example:

ssh user@server "ls -la"
Enter fullscreen mode Exit fullscreen mode

Runs a remote command securely.

Common SSH Commands

✔ Connect to server

ssh user@server_ip
Enter fullscreen mode Exit fullscreen mode

✔ Connect using custom port

ssh -p 2222 user@server_ip
Enter fullscreen mode Exit fullscreen mode

✔ Copy files securely

scp file.txt user@server:/home/user/
Enter fullscreen mode Exit fullscreen mode

✔ Secure file transfer

sftp user@server_ip
Enter fullscreen mode Exit fullscreen mode

🗝 SSH Agent (Managing Multiple Keys)

Start SSH agent:

eval "$(ssh-agent -s)"
Enter fullscreen mode Exit fullscreen mode

Add your key:

ssh-add ~/.ssh/id_rsa
Enter fullscreen mode Exit fullscreen mode

Very useful when managing multiple servers or Git accounts.

❗ Common SSH Errors
Permission Denied (publickey)

Fix permissions:

chmod 600 ~/.ssh/id_rsa
chmod 700 ~/.ssh

Enter fullscreen mode Exit fullscreen mode

Also verify correct key is uploaded.

Connection Refused

Check:

✔ SSH service is running
✔ Correct port is used
✔ Firewall allows traffic

SSH vs Telnet

SSH:

✔ Encrypted
✔ Secure
✔ Default port 22

Telnet:

✔ No encryption
✔ Plain text transmission
✔ Default port 23

Modern infrastructure uses SSH exclusively.

Advanced SSH Usage

SSH Config File

Location:

~/.ssh/config
Enter fullscreen mode Exit fullscreen mode

Example:

Host myserver
  HostName 192.168.1.10
  User ubuntu
  Port 2222
Enter fullscreen mode Exit fullscreen mode

Now connect simply using:

ssh myserver
Enter fullscreen mode Exit fullscreen mode

Real-World DevOps Deployment Flow

A secure production deployment usually includes:

✔ Generate SSH key pair
✔ Upload public key
✔ Disable password login
✔ Configure firewall
✔ Deploy application securely

Without SSH knowledge, cloud management becomes difficult.

Interview Questions

✔ What is SSH?
✔ Difference between SSH and Telnet?
✔ What is public key authentication?
✔ What is SSH tunneling?
✔ How do you secure an SSH server?

These are common DevOps and Cloud interview topics.

Final Thoughts

SSH is the backbone of secure server access in modern IT infrastructure.

If you are a DevOps Engineer, Backend Developer, or Cloud Engineer, mastering SSH is not optional.

Understanding:

✔ Key-based authentication
✔ SSH configuration
✔ Port forwarding
✔ Security hardening

Makes you production-ready.

Secure servers. Secure infrastructure. Secure career.

FAQs

  1. What is SSH?
    SSH (Secure Shell) is a protocol used for secure remote login and server management.

  2. What is the default SSH port?
    Port 22.

  3. What is SSH key-based authentication?
    It uses a public-private key pair to log in securely without a password.

  4. Why is SSH more secure than Telnet?
    SSH encrypts all communication; Telnet sends data in plain text.

  5. What is SSH tunneling?
    It creates an encrypted tunnel to securely forward network traffic.

  6. How is SSH used in DevOps?
    For deployments, remote commands, cloud server management, and CI/CD automation.

  7. How can I secure my SSH server?
    Use key-based login, disable root access, change the default port, and enable firewall rules.

Top comments (0)