ভূমিকা (Introduction)
লিনাক্স নেটওয়ার্কিং কোর্সের গত পর্বে আমরা traceroute, dig এবং ss কমান্ড দিয়ে নেটওয়ার্ক ট্রাবলশুটিং শিখেছি। এই পর্বে আমরা অত্যন্ত গুরুত্বপূর্ণ একটি বিষয় কাভার করব: SSH (Secure Shell) দিয়ে রিমোট লিনাক্স সার্ভার ম্যানেজমেন্ট এবং ফাইল ট্রান্সফার।
বিশ্বের প্রায় প্রতিটি লিনাক্স ক্লাউড বা ডাটা সেন্টার সার্ভার রিমোটলি এক্সেস করার জন্য SSH ব্যবহার করা হয়। সাধারণ পাসওয়ার্ড দিয়ে লগইন করা ব্রেটফোর্স অ্যাটাকের ঝুঁকিতে থাকে, তাই প্রফেশনাল এনভায়রনমেন্টে Passwordless SSH Key Authentication এবং ফাইল আদান-প্রদানের জন্য SCP ও Rsync ব্যবহার করা হয়।
১. SCP vs Rsync (ফাইল ট্রান্সফার টুলসের তুলনা)
| বৈশিষ্ট্য (Feature) | SCP (Secure Copy Protocol) | Rsync (Remote Sync) |
| মূল কাজ | সহজ ও সরাসরি ফাইল/ডিরেক্টরি এক সার্ভার থেকে অন্য সার্ভারে কপি করা। | ফাইল ও ফোল্ডার সিঙ্ক (Sync) করা এবং ব্যাকআপ রাখা। |
| পারফরম্যান্স | সব ফাইল প্রতিবার নতুন করে পুরোটা কপি করে। | কেবল পরিবর্তিত (Delta) অংশটুকু পাঠায়, যা অনেক দ্রুত। |
| কানেকশন ড্রপ সাপোর্ট | সংযোগ বিচ্ছিন্ন হলে পুনরায় শুরু থেকে কপি করতে হয়। | -P বা --partial ব্যবহার করে অবশিষ্টাংশ থেকে রিজ্যুম করা যায়। |
| কম্প্রেশন | সীমিত কম্প্রেশন সুবিধা। | ট্রান্সফারের সময় ডাটা কমপ্রেস (-z) করে ব্যান্ডউইথ বাঁচায়। |
২. ধাপে ধাপে প্র্যাকটিক্যাল গাইড
ক. বেসিক SSH কানেকশন (Password-based)
VM-Alpha থেকে VM-Beta (10.0.0.2) মেশিনে রিমোট লগইন করার সহজ কমান্ড:
Bash
ssh username@10.0.0.2
(যদি SSH সার্ভিস অন্য পোর্টে চলে, যেমন Port 2222: ssh -p 2222 username@10.0.0.2)
খ. SSH Key Pair তৈরি করা (ed25519 / rsa)
পাসওয়ার্ড ছাড়াই সুরক্ষিতভাবে লগইন করার জন্য আপনার পিসিতে SSH Key Pair (Public & Private Key) তৈরি করতে হবে:
Bash
ssh-keygen -t ed25519 -C "admin@domain.com"
(এটি ~/.ssh/ ডিরেক্টরিতে দুটি ফাইল তৈরি করবে: id_ed25519 যা আপনার Private Key এবং id_ed25519.pub যা Public Key।)
গ. পাবলিক কি রিমোট সার্ভারে কপি করা (ssh-copy-id)
তৈরি করা Public Key-টি রিমোট সার্ভার 10.0.0.2-এ পাঠাতে নিচের কমান্ডটি চালান:
Bash
ssh-copy-id -i ~/.ssh/id_ed25519.pub username@10.0.0.2
এখন আপনি পাসওয়ার্ড ছাড়াই এক ক্লিকে ssh username@10.0.0.2 দিয়ে সরাসরি লগইন করতে পারবেন।
ঘ. SCP দিয়ে রিমোট ফাইল কপি করা
একটি নির্দিষ্ট ফাইল বা ডিরেক্টরি রিমোট সার্ভারে বা রিমোট সার্ভার থেকে লোকাল পিসিতে আনতে:
- লোকাল ফাইল রিমোট সার্ভারে পাঠাতে:Bash
scp backup.zip username@10.0.0.2:/var/www/html/ - পুরো ডিরেক্টরি কপি করতে (
-r):Bashscp -r ./myfolder username@10.0.0.2:/home/username/
ঙ. Rsync দিয়ে দ্রুত ফাইল ও ফোল্ডার সিঙ্ক করা
অফিসিয়াল ব্যাকআপ ও বড় ফাইল সিঙ্ক করার জন্য rsync সেরা মাধ্যম:
Bash
rsync -avzP ./project_files/ username@10.0.0.2:/var/backups/project/
- ফ্ল্যাগগুলোর অর্থ:
-a(archive): ফাইল পারমিশন, টাইমস্ট্যাম্প ও ওনারশিপ বজায় রাখে।-v(verbose): বিস্তারিত আউটপুট দেখায়।-z(compress): ট্রান্সফারের সময় ডাটা কমপ্রেস করে ব্যান্ডউইথ কমায়।-P(progress & partial): প্রোগ্রেস বার দেখায় এবং ড্রপ হওয়া ফাইল অবশিষ্টাংশ থেকে রিজ্যুম করে।
💡 সিকিউরিটি টিপস (SSH Hardening)
প্রোডাকশন সার্ভারে সিকিউরিটি বাড়াতে /etc/ssh/sshd_config ফাইলটি ওপেন করে নিচের সেটিংসগুলো পরিবর্তন করুন:
Ini, TOML
PasswordAuthentication no
PermitRootLogin no
পরিবর্তন শেষে sudo systemctl restart ssh চালিয়ে দিন। এতে কেউ রুট হিসেবে বা পাসওয়ার্ড দিয়ে সরাসরি পাসওয়ার্ড অ্যাটাক করতে পারবে না।
সারসংক্ষেপ ও চেকলিস্ট (Summary Checklist)
আপনি কি বিষয়গুলো সফলভাবে সম্পন্ন করেছেন? চেকপয়েন্টগুলো মিলিয়ে নিন:
- [ ]
ssh-keygenদিয়ে সফলভাবে কি-পেয়ার তৈরি করতে পেরেছেন। - [ ]
ssh-copy-idদিয়ে পাসওয়ার্ডহীন SSH অথেটিকেশন কনফিগার করেছেন। - [ ]
scpএবংrsync -avzPকমান্ড দিয়ে ফাইল সফলভাবে আদান-প্রদান করেছেন।
