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@hostnameExample:ssh root@192.168.1.10ssh surya@myserver.com
Connect with Port
ssh -p 2222 username@serverGenerate SSH Key
ssh-keygenDefault path:
~/.ssh/id_rsa
ssh-keygen -t rsa -b 4096Execute 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@serverIf 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@serverSSH Config File (Time Saver!)
Location:
~/.ssh/configExample:
Host myserver
HostName 192.168.1.10
User surya
Port 22
IdentityFile ~/.ssh/id_rsaNow simply run:
ssh myserverconnected
๐ 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:/pathMirror 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 restartCheck 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_configChange:
PermitRootLogin noRestart 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 destinationExamples:
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 contentsfolderโ 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