🔑 SSH & Remote Access

SSH lets you securely control a remote server from your terminal. Learn the essentials here.

🔑 SSH Fundamentals
Q1What is SSH and how does it work?Intermediate

SSH (Secure Shell) is a cryptographic network protocol for securely operating network services over an unsecured network. It gives you an encrypted terminal session to a remote server.

SSH uses public-key cryptography. You have a key pair: a private key (kept secret on your machine) and a public key (placed on the server). The server verifies your identity using this pair without transmitting your password.

# Basic SSH connection
ssh username@server-ip-address

# SSH on a custom port
ssh -p 2222 username@server-ip

# SSH with a key file
ssh -i ~/.ssh/my_key.pem username@server-ip
💡 SSH runs on port 22 by default. Many admins change it to a non-standard port to reduce automated brute-force attacks.
Q2How do I copy files to/from a server using SSH?Intermediate

Use SCP (Secure Copy Protocol) or rsync — both work over SSH and are encrypted.

# Copy local file TO server
scp myfile.html user@server:/var/www/html/

# Copy file FROM server to local
scp user@server:/var/log/nginx/error.log ./

# Copy entire folder TO server
scp -r ./my-site/ user@server:/var/www/html/

# rsync (smarter — only syncs changed files)
rsync -avz ./my-site/ user@server:/var/www/html/
💡 rsync is better than scp for deploying websites — it only uploads files that have changed, making it much faster for updates.
Q3What are SSH keys and why are they safer than passwords?Intermediate

SSH keys are mathematically linked pairs of cryptographic keys. They're safer than passwords because:

  • Keys are much longer and more complex than any password
  • Private key never leaves your machine — nothing is transmitted to "intercept"
  • Immune to brute-force (can't guess a 2048-bit key)
  • No risk of phishing (there's no password to type on a fake site)
# Generate an SSH key pair
ssh-keygen -t ed25519 -C "your-email@example.com"

# Copy public key to server (enables key-based login)
ssh-copy-id username@server-ip
⚠️ Once you've set up SSH key authentication, disable password authentication on the server in /etc/ssh/sshd_config by setting PasswordAuthentication no.