SSH โ€” Secure Shell

A secure protocol to remotely access and manage servers

What is SSH?

SSH (Secure Shell) allows secure remote login, command execution, and file transfer between systems over an encrypted channel.

port
22


Basic SSH Command

ssh username@hostname

Example:
ssh root@192.168.1.10
ssh surya@myserver.com

Connect with Port

ssh -p 2222 username@server

Generate SSH Key

ssh-keygen

Default path:
~/.ssh/id_rsa

ssh-keygen -t rsa -b 4096

Execute Command Without Login

ssh user@server "uptime" ssh user@server "ls -l /var/www"

๐Ÿš€ Copy Public Key to Server (Passwordless Login)

ssh-copy-id username@server

If ssh-copy-id not available:

cat ~/.ssh/id_rsa.pub | ssh user@server "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
Option Meaning
-p specify port
-i choose identity (key file)
-v verbose debugging
-X enable GUI forwarding
-t force terminal

Example:

ssh -i ~/.ssh/custom_key user@server

SSH Config File (Time Saver!)

Location:

~/.ssh/config

Example:

Host myserver
   HostName 192.168.1.10
   User surya
   Port 22
   IdentityFile ~/.ssh/id_rsa

Now simply run:

ssh myserver

connected

๐Ÿ“‚ File Transfer Commands

Upload File โ†’ Server

scp file.txt user@server:/home/user/

Download File โ† Server

scp user@server:/home/user/file.txt .

Copy Folder

scp -r folder user@server:/path/

โšก Faster + Reliable Transfer (rsync)

rsync -avz file user@server:/path

Mirror directory:

rsync -avz --delete folder/ user@server:/path/

Execute Command Without Login

ssh user@server "uptime" ssh user@server "ls -l /var/www"

Reset SSH Service

Linux:

sudo systemctl restart ssh`

Or:

sudo service ssh restart

Check Port Listening

sudo netstat -tulpn | grep ssh

๐Ÿ›ก๏ธ Security Best Practices

  • Disable root login
  • Use SSH keys (avoid passwords)
  • Change default port
  • Enable fail2ban
  • Restrict IPs

Disable root login:
Edit:

sudo nano /etc/ssh/sshd_config

Change:

PermitRootLogin no

Restart SSH.

Quick Summary

  • SSH connects securely
  • Use ssh-keygen + ssh-copy-id
  • Use config file for shortcuts
  • SCP / rsync for file transfer
  • Tunneling for advanced usage

rsync โ€” File Synchronization & Backup Tool


What is rsync?

rsync (Remote Sync) is used to copy and synchronize files/folders locally or between remote systems.
It is faster than scp because:

  • Transfers only differences
  • Supports resume
  • Preserves permissions & timestamps

๐Ÿงพ Basic Syntax

rsync [options] source destination

Examples:

rsync file.txt /home/user/Desktop/
rsync myfolder/ backup/

Upload to Remote Server

rsync file.txt user@server:/path/

Directory:

rsync -av myfolder/ user@server:/path/

Download from Remote Server

rsync -av user@server:/path/file.txt .

Directory:

rsync -av user@server:/path/folder/ .

๐Ÿงญ Important Options

Option Meaning
-a archive (preserves permissions, owner, time, recursive)
-v verbose
-z compress
-P progress + resume
--delete remove files not in source
-r recursive (included in -a)

Most used combo

rsync -avzP source/ destination/

โš ๏ธ Slash Rule (Very Important)

  • folder/ โ†’ only contents
  • folder โ†’ folder + contents
    Example:
rsync -av Photos/ Backup/

Copies inside Photos โ†’ Backup/

rsync -av Photos Backup/

Creates:

Backup/Photos/

๐Ÿ” Mirror Exact Copy

Deletes extra files in destination:

rsync -av --delete source/ destination/

Use carefully!

๐Ÿš€ Resume Large Transfers

rsync -avzP file.iso user@server:/path/

๐ŸŽฏ Exclude Files

Skip unwanted files:

rsync -av --exclude="*.log" folder/ backup/

Multiple:

rsync -av \
--exclude="node_modules" \
--exclude="*.tmp" \
project/ backup/

๐Ÿ” rsync Over SSH (Secure)

rsync -avz -e ssh folder/ user@server:/path/

Custom SSH Port:

rsync -avz -e "ssh -p 2222" folder/ user@server:/path/

๐Ÿงช Real Use Cases

1๏ธโƒฃ Backup Home Directory

rsync -av ~/ Documents/Backup/

2๏ธโƒฃ Deploy Website

rsync -avz site/ user@server:/var/www/html/

3๏ธโƒฃ Sync External Drive

rsync -av /mnt/drive/ /backup/drive/

๐Ÿง  Safety Tip

Preview without making changes:

rsync -av --dry-run source/ destination/

๐Ÿ† Practice

1๏ธโƒฃ Sync two folders
2๏ธโƒฃ Test with / and without /
3๏ธโƒฃ Try --delete carefully
4๏ธโƒฃ Try remote sync


[!Summary]
rsync is powerful because it is:

  • Fast
  • Secure
  • Efficient
  • Backup-friendly
  • Ideal for DevOps & servers