Ssh

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.

[!Default 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