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@hostnameExample:
ssh root@192.168.1.10
ssh 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