SSH বেসিক্স: সার্ভারে রিমোট কানেকশন
SSH কি এবং কেন গুরুত্বপূর্ণ?
SSH (Secure Shell) হল একটি নিরাপদ নেটওয়ার্ক প্রোটোকল যা ব্যবহারকারীদের রিমোট সার্ভারে নিরাপদে কানেক্ট করতে সাহায্য করে। এটি ডেটা এনক্রিপশন ব্যবহার করে, যা আপনার কানেকশনকে হ্যাকিং এবং স্নুপিং থেকে রক্ষা করে।
SSH দিয়ে সার্ভারে কানেক্ট করা
প্রয়োজনীয় তথ্য:
সার্ভারে কানেক্ট করতে আপনার নিম্নলিখিত তথ্য প্রয়োজন হবে:
- সার্ভারের IP ঠিকানা বা হোস্টনেম
- ইউজারনেম (সাধারণত
rootবা অন্য কোন ইউজার) - পাসওয়ার্ড বা SSH কী
পাসওয়ার্ড দিয়ে কানেক্ট করা:
# বেসিক SSH কানেকশন
ssh username@server_ip_or_hostname
# উদাহরণ:
ssh root@192.168.1.100যখন আপনি এই কমান্ড চালাবেন, সিস্টেম আপনাকে পাসওয়ার্ড জিজ্ঞাসা করবে। পাসওয়ার্ড টাইপ করুন (টাইপ করার সময় কিছু দেখাবে না) এবং Enter চাপুন।
প্রথমবার কানেক্ট করার সময়:
প্রথমবার কোন সার্ভারে কানেক্ট করার সময়, আপনি এরকম একটি মেসেজ দেখতে পাবেন:
The authenticity of host '192.168.1.100 (192.168.1.100)' can't be established.
ECDSA key fingerprint is SHA256:abcdefghijklmnopqrstuvwxyz123456789.
Are you sure you want to continue connecting (yes/no/[fingerprint])?এটি নিরাপত্তা সতর্কতা। আপনি যদি সার্ভারের মালিক হন বা বিশ্বস্ত সোর্স থেকে এটি পেয়ে থাকেন, তাহলে yes টাইপ করুন এবং Enter চাপুন।
SSH কী জেনারেশন এবং অথেনটিকেশন
পাসওয়ার্ড ব্যবহার করার চেয়ে SSH কী ব্যবহার করা অনেক বেশি নিরাপদ। এটি দুটি পার্ট নিয়ে গঠিত:
- প্রাইভেট কী: আপনার কম্পিউটারে থাকে, কখনই শেয়ার করবেন না
- পাবলিক কী: সার্ভারে রাখা হয়
SSH কী জেনারেট করা:
# SSH কী জেনারেট করা
ssh-keygen -t ed25519 -C "your_email@example.com"
# পুরানো সিস্টেমের জন্য (যদি ed25519 সাপোর্ট না করে)
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"কমান্ড চালানোর পর:
- কী সেভ করার লোকেশন জিজ্ঞাসা করবে (ডিফল্ট রাখতে Enter চাপুন)
- পাসফ্রেজ জিজ্ঞাসা করবে (অপশনাল, কিন্তু নিরাপত্তার জন্য সুপারিশ করা হয়)
এটি দুটি ফাইল তৈরি করবে:
~/.ssh/id_ed25519(প্রাইভেট কী)~/.ssh/id_ed25519.pub(পাবলিক কী)
সার্ভারে পাবলিক কী কপি করা:
# পাবলিক কী সার্ভারে কপি করা
ssh-copy-id username@server_ip_or_hostname
# উদাহরণ:
ssh-copy-id root@192.168.1.100অথবা, ম্যানুয়ালি:
# পাবলিক কী দেখুন
cat ~/.ssh/id_ed25519.pub
# এই আউটপুট কপি করুন এবং সার্ভারে ~/.ssh/authorized_keys ফাইলে পেস্ট করুনSSH কী দিয়ে কানেক্ট করা:
এখন আপনি পাসওয়ার্ড ছাড়াই কানেক্ট করতে পারবেন:
ssh username@server_ip_or_hostnameSSH কনফিগারেশন ফাইল
আপনি ~/.ssh/config ফাইল ব্যবহার করে SSH কানেকশন সেটিংস সেভ করতে পারেন:
# SSH কনফিগ ফাইল তৈরি বা এডিট করুন
nano ~/.ssh/configনিচের মত কনফিগারেশন যোগ করুন:
Host myserver
HostName 192.168.1.100
User root
Port 22
IdentityFile ~/.ssh/id_ed25519এখন আপনি শুধু ssh myserver টাইপ করে কানেক্ট করতে পারবেন।
অন্যান্য উপযোগী SSH কমান্ড
ফাইল ট্রান্সফার (SCP):
# লোকাল থেকে রিমোট
scp local_file.txt username@server_ip_or_hostname:/remote/directory/
# রিমোট থেকে লোকাল
scp username@server_ip_or_hostname:/remote/file.txt local_directory/
# ডিরেক্টরি কপি করতে -r ফ্ল্যাগ ব্যবহার করুন
scp -r local_directory/ username@server_ip_or_hostname:/remote/directory/SSH টানেলিং:
লোকাল পোর্ট ফরওয়ার্ডিং (লোকাল পোর্ট থেকে রিমোট সার্ভারে):
ssh -L local_port:destination_server:destination_port username@server_ip_or_hostname
# উদাহরণ: লোকাল পোর্ট 8080 থেকে রিমোট সার্ভারের 80 পোর্টে
ssh -L 8080:localhost:80 root@192.168.1.100রিমোট পোর্ট ফরওয়ার্ডিং (রিমোট পোর্ট থেকে লোকাল মেশিনে):
ssh -R remote_port:localhost:local_port username@server_ip_or_hostname
# উদাহরণ: রিমোট সার্ভারের 8080 পোর্ট থেকে লোকাল মেশিনের 3000 পোর্টে
ssh -R 8080:localhost:3000 root@192.168.1.100SSH সেশন ম্যানেজমেন্ট:
# ব্যাকগ্রাউন্ডে SSH সেশন রাখা
ssh -f username@server_ip_or_hostname command
# কানেকশন অ্যালাইভ রাখা
ssh -o ServerAliveInterval=60 username@server_ip_or_hostnameSSH সিকিউরিটি বেস্ট প্র্যাকটিস
1. রুট লগইন ডিজেবল করা:
সার্ভারে /etc/ssh/sshd_config ফাইল এডিট করুন:
sudo nano /etc/ssh/sshd_config
নিচের লাইন খুঁজুন এবং পরিবর্তন করুন:
PermitRootLogin no
2. পাসওয়ার্ড অথেনটিকেশন ডিজেবল করা:
একই ফাইলে:
PasswordAuthentication no
3. SSH পোর্ট পরিবর্তন করা:
ডিফল্ট পোর্ট 22 পরিবর্তন করুন:
Port 2222 # অন্য কোন নাম্বার ব্যবহার করুন
4. পরিবর্তন সেভ করা:
ফাইল সেভ করার পর SSH সার্ভিস রিস্টার্ট করুন:
sudo systemctl restart sshd
প্র্যাকটিক্যাল এক্সারসাইজ
আসুন একটি সম্পূর্ণ উদাহরণ দেখি:
1. SSH কী জেনারেট করা:
# টার্মিনাল খুলুন এবং কমান্ড চালান
ssh-keygen -t ed25519 -C "your_email@example.com"
# ডিফল্ট লোকেশন এবং পাসফ্রেজ সেট করুন
2. সার্ভারে নতুন ইউজার তৈরি করা:
# প্রথমে রুট হিসেবে লগইন করুন
ssh root@your_server_ip
# নতুন ইউজার তৈরি করুন
adduser newuser
# সুডো অধিকার দিন
usermod -aG sudo newuser
3. নতুন ইউজারের জন্য SSH কী সেটআপ করা:
# নতুন ইউজারের জন্য .ssh ডিরেক্টরি তৈরি করুন
mkdir -p /home/newuser/.ssh
# authorized_keys ফাইল তৈরি করুন
nano /home/newuser/.ssh/authorized_keys
# আপনার পাবলিক কী পেস্ট করুন (cat ~/.ssh/id_ed25519.pub আউটপুট)
# পারমিশন সেট করুন
chmod 700 /home/newuser/.ssh
chmod 600 /home/newuser/.ssh/authorized_keys
chown -R newuser:newuser /home/newuser/.ssh
4. SSH কনফিগারেশন আপডেট করা:
# SSH কনফিগ ফাইল এডিট করুন
sudo nano /etc/ssh/sshd_config
# নিচের পরিবর্তনগুলি করুন:
PermitRootLogin no
PasswordAuthentication no
Port 2222 # অন্য কোন নাম্বার ব্যবহার করুন
# SSH সার্ভিস রিস্টার্ট করুন
sudo systemctl restart sshd
5. নতুন সেটিংস দিয়ে কানেক্ট করা:
# নতুন পোর্ট দিয়ে কানেক্ট করুন
ssh -p 2222 newuser@your_server_ip
6. SSH কনফিগ ফাইল আপডেট করা:
আপনার লোকাল মেশিনে:
nano ~/.ssh/config
নিচের কনফিগারেশন যোগ করুন:
Host myserver
HostName your_server_ip
User newuser
Port 2222
IdentityFile ~/.ssh/id_ed25519
এখন আপনি শুধু ssh myserver টাইপ করে কানেক্ট করতে পারবেন।
ট্রাবলশুটিং
1. পারমিশন এরর:
Permissions 0644 for '/home/user/.ssh/id_ed25519' are too open.
সমাধান:
chmod 600 ~/.ssh/id_ed25519
2. কানেকশন রিফিউজড:
Connection refused to host: your_server_ip port: 22
সম্ভাব্য কারণ:
- SSH সার্ভিস চালু নেই
- ফায়ারওয়াল পোর্ট ব্লক করছে
- পোর্ট পরিবর্তন করা হয়েছে
সমাধান:
# সার্ভারে SSH সার্ভিস চেক করুন
sudo systemctl status sshd
# ফায়ারওয়াল চেক করুন
sudo ufw status
# অন্য পোর্ট দিয়ে চেষ্টা করুন
ssh -p 2222 username@your_server_ip
সারাংশ
এই টিউটোরিয়ালে আমরা শিখেছি:
- SSH কি এবং কেন গুরুত্বপূর্ণ – নিরাপদ রিমোট অ্যাক্সেসের জন্য
- SSH দিয়ে সার্ভারে কানেক্ট করা – পাসওয়ার্ড এবং কী-বেজড অথেনটিকেশন
- SSH কী জেনারেশন – নিরাপদ অথেনটিকেশনের জন্য
- SSH কনফিগারেশন – কানেকশন সেটিংস সেভ করা
- ফাইল ট্রান্সফার – SCP ব্যবহার করে
- SSH টানেলিং – পোর্ট ফরওয়ার্ডিং
- সিকিউরিটি বেস্ট প্র্যাকটিস – সার্ভার নিরাপদ রাখা
এই বেসিক জ্ঞান আপনাকে SSH ব্যবহার করে আপনার সার্ভার নিরাপদে ম্যানেজ করতে সাহায্য করবে।
আপনি কি কোন বিশেষ বিষয়ে আরও বিস্তারিত জানতে চান?