১. পরিচিতি
উবুন্টুতে SSH ব্যবহার করে আপনি নিরাপদে আপনার সার্ভার বা পিসি রিমোটলি অ্যাক্সেস ও পরিচালনা করতে পারেন। এই গাইডটি SSH এর মৌলিক বিষয় থেকে উবুন্টুতে SSH সার্ভার ইনস্টল, নিরাপত্তা ব্যবস্থা এবং ট্রাবলশুটিং পর্যন্ত সবকিছু ব্যাখ্যা করে। এটি নবীনদের জন্য বানানো এবং সহজে বোঝার জন্য তৈরি।
SSH কী?
SSH (Secure Shell) হল একটি প্রোটোকল যা নেটওয়ার্কের মাধ্যমে নিরাপদ রিমোট সংযোগের সুযোগ দেয়। প্রচলিত টেলনেট বা FTP এর তুলনায়, SSH ডেটা এনক্রিপ্ট করে যাতে শোনার বা পরিবর্তন করার ঝুঁকি উল্লেখযোগ্যভাবে কমে যায়।
উবুন্টুতে SSH এর প্রধান ব্যবহারিক ক্ষেত্রসমূহ
উবুন্টুতে SSH সাধারণত নিম্নলিখিত উদ্দেশ্যে ব্যবহার করা হয়:
- রিমোট সার্ভ ম্যানেজমেন্ট : দূরবর্তী স্থান থেকে উবুন্টু সার্ভার পরিচালনা করুন।
- ফাইল ট্রান্সফার : SCP বা SFTP ব্যবহার করে নিরাপদে ফাইল স্থানান্তর করুন।
- পোর্ট ফরোয়ার্ডিং : নিরাপদ রিমোট সংযোগ স্থাপন করুন।
এই গাইডে আপনি যা শিখবেন
- SSH এর মৌলিক ধারণা ও কাজের পদ্ধতি
- উবুন্টুতে SSH সার্ভার কীভাবে ইনস্টল করবেন
- SSH সংযোগের সেটিংস ও ট্রাবলশুটিং
- SSH এর জন্য নিরাপত্তা ব্যবস্থা
২. SSH এর মৌলিক ধারণা
SSH কার্যকরভাবে ব্যবহার করতে হলে এর মৌলিক ধারণা বোঝা গুরুত্বপূর্ণ। এই অংশে SSH কীভাবে কাজ করে এবং বিভিন্ন প্রমাণীকরণ পদ্ধতি ব্যাখ্যা করা হয়েছে।
SSH কীভাবে কাজ করে
SSH হল একটি প্রোটোকল যা ক্লায়েন্ট ও সার্ভারের মধ্যে নিরাপদ সংযোগ স্থাপন করে। ডিফল্টভাবে, এটি এনক্রিপ্টেড যোগাযোগের জন্য TCP পোর্ট ২২ ব্যবহার করে।
প্রধান বৈশিষ্ট্যসমূহ
- রিমোট লগইন : সার্ভারে কমান্ড চালান।
- ফাইল ট্রান্সফার : SCP বা SFTP ব্যবহার করে নিরাপদে ডেটা পাঠান।
- পোর্ট ফরোয়ার্ডিং : SSH এর মাধ্যমে অন্যান্য সার্ভিসে সংযোগ করুন।
SSH প্রমাণীকরণ পদ্ধতি
SSH প্রধানত দুটি প্রমাণীকরণ পদ্ধতি সমর্থন করে:
পাসওয়ার্ড প্রমাণীকরণ
- ব্যবহারকারীর নাম ও পাসওয়ার্ড দিয়ে লগইন করুন।
- ব্যবহার সহজ কিন্তু ব্রুট ফোর্স আক্রমণের ঝুঁকি থাকে।
পাবলিক কী প্রমাণীকরণ
- পাবলিক ও প্রাইভেট কী জোড়া ব্যবহার করে প্রমাণীকরণ করুন।
- বেশি নিরাপদ এবং পাসওয়ার্ড প্রমাণীকরণের তুলনায় সুপারিশকৃত।
SSH এর সুবিধা
- ডেটা এনক্রিপশন : যোগাযোগকে ইন্টারসেপশন থেকে রক্ষা করে।
- সহজ রিমোট ম্যানেজমেন্ট : যেকোনো স্থান থেকে অ্যাক্সেসযোগ্য।
- বর্ধিত নিরাপত্তা : অননুমোদিত প্রবেশ রোধে সহায়তা করে।
৩. উবুন্টুতে SSH সার্ভার ইনস্টল করা
উবুন্টুতে SSH ব্যবহার করতে হলে OpenSSH সার্ভার ইনস্টল করতে হবে। এই অংশে ইনস্টলেশন ধাপ এবং মৌলিক কনফিগারেশন ব্যাখ্যা করা হয়েছে।
OpenSSH সার্ভার ইনস্টল করা
আপনি নিম্নলিখিত কমান্ড দিয়ে উবুন্টুতে OpenSSH সার্ভার ইনস্টল পারেন:
sudo apt update
sudo apt install openssh-server
ইনস্টলেশন শেষ হলে, SSH সার্ভিস চালু আছে কিনা পরীক্ষা করুন:
sudo systemctl status ssh
SSH সার্ভিস শুরু ও পরীক্ষা
ুয়ালি SSH সার্ভিস শুরু বা বন্ধ করতে নিম্নলিখিত কমান্ড ব্যবহার করুন:
# Start SSH
sudo systemctl start ssh
# Enable SSH to start automatically on reboot
sudo systemctl enable ssh
# Stop SSH
sudo systemctl stop ssh
UFW (Uncomplicated Firewall) কনফিগার করা
ডিফল্টভাবে UFW সক্রিয় থাকলে SSH সংযোগ ব্লক হতে পারে। নিম্নলিখিত কমান্ড দিয়ে SSH অ্যাক্সেস অনুমোদন করুন:
sudo ufw allow ssh
sudo ufw enable
৪. SSH সংযোগ কনফিগার করা
নিরাপদভাবে SSH ব্যবহার করতে সঠিক কনফিগারেশন প্রয়োজন। এই অংশে পাবলিক কী প্রমাণীকরণ সেটআপের পদ্ধতি ব্যাখ্যা করা হয়েছে।
কী জোড়া তৈরি করা
ক্লায়েন্ট সাইডে নিম্নলিখিত কমান্ড চালিয়ে পাবলিক ও প্রাইভেট কী জোড়া তৈরি করুন:
ssh-keygen -t rsa -b 4096
ডিফল্টভাবে, প্রাইভেট কী ~/.ssh/id_rsa তে এবং পাবলিক কী ~/.ssh/id_rsa.pub তে সংরক্ষিত হয়।
পাবলিক কী সার্ভারে কপি করা
তৈরি করা পাবলিক কী SSH সার্ভারে স্থানান্তর করুন:
ssh-copy-id username@server-ip
বিকল্পভাবে, SCP ব্যবহার করে ম্যানুয়ালি কী কপি করুন:
scp ~/.ssh/id_rsa.pub username@server-ip:~/
সার্ভারে, পাবলিক কী সঠিক ডিরেক্টরিতে সরান:
mkdir -p ~/.ssh
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
rm ~/id_rsa.pub
sshd_config ফাইল সম্পাদনা করা
SSH কনফিগারেশন ফাইল পরিবর্ত করে নিরাপত্তা বাড়ান:
sudo nano /etc/ssh/sshd_config
নিম্নলিখিত সেটিংস আপডেট করুন:
# Disable password authentication (enable public key authentication only)
PasswordAuthentication no
# Disable root login
PermitRootLogin no
# Change the default SSH port (example: 2222)
Port 2222
পরিবর্তনগুলি করার পরে, SSH সার্ভিস পুনরায় চালু করুন:
sudo systemctl restart ssh
5. SSH সার্ভারে সংযোগ করা
একবার SSH সার্ভার সেট আপ হয়ে গেলে, আপনাকে ক্লায়েন্ট মেশিন থেকে এতে সংযোগ করতে হবে। এই বিভাগে মৌলিক SSH সংযোগ পদ্ধতি এবং পোর্ট পরিবর্তন পরিচালনা ব্যাখ্যা করা হয়েছে।
মৌলিক SSH সংযোগ কমান্ড
ক্লায়েন্ট থেকে SSH সার্ভারে সংযোগ করতে, ব্যবহার করুন:
ssh username@server-ip
উদাহরণস্বরূপ, যদি সার্ভারের IP 192.168.1.10 এবং ব্যবহারকারীর নাম ubuntu হয়, তাহলে লিখুন:
ssh ubuntu@192.168.1.10
প্রথম সংযোগে, আপনি একটি ফিঙ্গারপ্রিন্ট যাচাই প্রম্পট দেখবেন। গ্রহণ করতে এবং চালিয়ে যেতে “yes” টাইপ করুন।
কাস্টম পোর্ট দিয়ে সংযোগ করা
যদি ডিফল্ট পোর্ট (২২) পরিবর্তন করা হয়ে থাকে, তাহলে -p অপশন ব্যবহার করে পোর্ট নির্দিষ্ট করুন:
ssh -p 2222 ubuntu@192.168.1.10
প্রাইভেট কী দিয়ে সংযোগ করা
যদি পাবলিক কী প্রমাণীকরণ ব্যবহার করেন, তাহলে -i অপশন দিয়ে প্রাইভেট কী নির্দিষ্ট করুন:
ssh -i ~/.ssh/id_rsa ubuntu@192.168.1.10
SSH এর মাধ্যমে রিমোট কমান্ড চালানো
আপনি ইন্টারেক্টিভভাবে সার্ভারে লগইন না করে রিমোট কমান্ড চালাতে পারেন:
ssh ubuntu@192.168.1.10 "ls -lah /home/ubuntu"
এটি অটোমেশন এবং রিমোট ম্যানেজমেন্টের জন্য উপযোগী।
SCP দিয়ে ফাইল ট্রান্সফার করা
স্থানীয় পিসি এবং রিমোট সার্ভারের মধ্যে ফাইল ট্রান্সফার করতে SSH ব্যবহার করুন।
স্থানীয় থেকে রিমোটে
scp filename username@server-ip:/remote/directory
উদাহরণ:
scp myfile.txt ubuntu@192.168.1.10:/home/ubuntu/
রিমোট থেকে স্থানীয়তে
scp username@server-ip:/remote/file ./local/directory
উদাহরণ:
scp ubuntu@192.168.1.10:/home/ubuntu/myfile.txt ./
SFTP দিয়ে ফাইল ম্যানেজমেন্ট
SSH এর মাধ্যমে ফাইল ম্যানেজমেন্টের জন্য SFTP ব্যবহার করুন:
sftp ubuntu@192.168.1.10
সংযুক্ত হওয়ার পরে, আপনি নিম্নলিখিত কমান্ডগুলি ব্যবহার করতে পারেন:
ls # List files
cd # Change directory
put file # Upload file from local to remote
get file # Download file from remote to local
exit # Exit SFTP session
6. SSH সংযোগের সমস্যার সমাধান
SSH সংযোগের সমস্যাগুলি সাধারণ। এই বিভাগে সাধারণ সমস্যাগুলি এবং তাদের সমাধান আলোচনা করা হয়েছে।
সাধারণ SSH সংযোগ ত্রুটি এবং সমাধান
যদি SSH সংযোগ ব্যর্থ হয়, তবে নিম্নলিখিত কারণগুলি বিবেচনা করুন:
১. SSH সার্ভার চালু নেই
SSH সার্ভার সক্রিয় আছে কিনা পরীক্ষা করুন:
sudo systemctl status ssh
সমাধান:
- যদি সার্ভার চালু না থাকে, তাহলে নিম্নলিখিত দিয়ে চালু করুন:
sudo systemctl start ssh
- রিবুটের সময় SSH স্বয়ংক্রিয়ভাবে চালু হয় তা নিশ্চিত করুন:
sudo systemctl enable ssh
২. ফায়ারওয়াল (UFW) SSH ব্লক করছে
যদি UFW (Uncomplicated Firewall) সক্রিয় থাকে, তবে এটি SSH অ্যাক্সেস ব্লক করতে পারে।
সমাধান:
- বর্তমান UFW সেটিংস পরীক্ষা করুন:
sudo ufw status
- SSH সংযোগ অনুমোদন করুন:
sudo ufw allow ssh
(যদি কাস্টম পোর্ট ব্যবহার করেন, তাহলে sudo ufw allow <port> চালান)
- UFW পুনরায় চালু করুন:
sudo ufw reload
৩. SSH পোর্ট নম্বর পরিবর্তিত হয়েছে
যদি SSH ভিন্ন পোর্টে চলমান থাকে, তবে সংযোগের সময় সঠিক পোর্ট নির্দিষ্ট করুন।
সমাধান:
- কনফিগার করা SSH পোর্ট যাচাই করুন:
sudo grep Port /etc/ssh/sshd_config
- সংযোগের সময় সঠিক পোর্ট ব্যবহার করুন:
ssh -p 2222 username@server-ip
৪. ভুল SSH কী অনুমতি
SSH কী-র ভুল ফাইল অনুমতি প্রমাণীকরণ ব্যর্থতার কারণ হতে পারে।
সমাধান:
- প্রাইভেট কী-র সঠিক অনুমতি আছে তা নিশ্চিত করুন:
chmod 600 ~/.ssh/id_rsa
- authorized keys ফাইল সঠিকভাবে সেট করা আছে তা নিশ্চিত করুন:
chmod 644 ~/.ssh/authorized_keys
৫. SSH লগ পরীক্ষা করা
SSH সমস্যার নির্ণয়ের জন্য লগগুলি পরীক্ষা করুন:
sudo journalctl -u ssh --no-pager | tail -n 20
রিয়েল-টাইম লগ মনিটরিংয়ের জন্য:
sudo tail -f /var/log/auth.log
7. SSH নিরাপত্তা বৃদ্ধি করা
SSH একটি শক্তিশালী রিমোট অ্যাক্সেস টুল, তবে যথাযথ নিরাপত্তা ব্যবস্থা না থাকলে এটি অননুমোদিত প্রবেশ এবং ব্রুট‑ফোর্স আক্রমণের লক্ষ্য হতে পারে। এই অংশে SSH নিরাপত্তা বাড়ানোর জন্য সুপারিশকৃত কনফিগারেশনগুলি ব্যাখ্যা করা হয়েছে।
১. পাসওয়ার্ড প্রমাণীকরণ নিষ্ক্রিয় করুন এবং পাবলিক কী প্রমাণীকরণ ব্যবহার করুন
ডিফল্টভাবে, SSH পাসওয়ার্ড প্রমাণীকরণ অনুমোদন করে, যা ব্রুট‑ফোর্স আক্রমণের ঝুঁকি বাড়ায়। পাবলিক কী প্রমাণীকরণে পরিবর্তন করলে নিরাপত্তা বৃদ্ধি পায়।
ধাপসমূহ
sshd_configফাইলটি সম্পাদনা করুন:
sudo nano /etc/ssh/sshd_config
- নিম্নলিখিত সেটিংগুলি পরিবর্তন (বা যোগ) করুন:
PasswordAuthentication no
PubkeyAuthentication yes
- SSH সার্ভিস পুনরায় চালু করুন:
sudo systemctl restart ssh
এটি নিশ্চিত করে যে SSH শুধুমাত্র পাবলিক কী মাধ্যমে প্রমাণীকরণ গ্রহণ করবে। এই পরিবর্তন প্রয়োগের আগে পাবলিক কী প্রমাণীকরণ সেট আপ করা নিশ্চিত করুন।
২. ডিফল্ট SSH পোর্ট পরিবর্তন করুন
ডিফল্ট SSH পোর্ট (২২) ব্যবহার করলে আক্রমণকারীদের জন্য এটি সহজ লক্ষ্য হয়ে যায়। পোর্ট পরিবর্তন করলে নিরাপত্তা বাড়ে।
ধাপসমূহ
sshd_configফাইলটি খুলুন:
sudo nano /etc/ssh/sshd_config
- পোর্ট নম্বর পরিবর্তন করুন (যেমন, ২২২২-এ পরিবর্তন করুন):
Port 2222
- ফায়ারওয়ালে নতুন পোর্টটি অনুমোদন করুন:
sudo ufw allow 2222/tcp
- SSH সার্ভিস পুনরায় চালু করুন:
sudo systemctl restart ssh
- নতুন পোর্টটি পরীক্ষা করুন:
ssh -p 2222 username@server-ip
৩. রুট লগইন নিষ্ক্রিয় করুন
ডিফল্টভাবে, রুট ব্যবহারকারী SSH এর মাধ্যমে লগইন করতে পারে, যা নিরাপত্তা ঝুঁকি তৈরি করে। শুধুমাত্র নির্দিষ্ট ব্যবহারকারীদের সংযোগের অনুমতি দেওয়া সুপারিশ করা হয়।
ধাপসমূহ
sshd_configফাইলটি খুলুন:
sudo nano /etc/ssh/sshd_config
- নিম্নলিখিত সেটিংটি পরিবর্তন করুন:
PermitRootLogin no
- SSH সার্ভিস পুনরায় চালু করুন:
sudo systemctl restart ssh
৪. Fail2Ban দিয়ে ব্রুট‑ফোর্স আক্রমণ প্রতিরোধ করুন
Fail2Ban লগইন প্রচেষ্টা পর্যবেক্ষণ করে এবং একাধিক ব্যর্থ প্রমাণীকরণ প্রচেষ্টার পরে IP ঠিকানা ব্লক করে।
ইনস্টলেশন এবং কনফিগারেশন
- Fail2Ban ইনস্টল করুন:
sudo apt install fail2ban -y
- ডিফল্ট কনফিগারেশন ফাইল কপি করুন:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
jail.localসম্পাদনা করুন :
sudo nano /etc/fail2ban/jail.local
[sshd]এর অধীনে সেটিংগুলি পরিবর্তন করুন :
[sshd]
enabled = true
maxretry = 5
bantime = 600
findtime = 600
maxretry: অনুমোদিত সর্বোচ্চ লগইন প্রচেষ্টা সংখ্যা।bantime: একটি IP কত সেকেন্ড ব্লক থাকবে।findtime: ব্যর্থ প্রচেষ্টা গণনার জন্য সময়ের উইন্ডো (সেকেন্ডে)।
- Fail2Ban পুনরায় চালু করুন:
sudo systemctl restart fail2ban
- Fail2Ban স্থিতি পরীক্ষা করুন:
sudo fail2ban-client status sshd
৮. প্রায়শই জিজ্ঞাসিত প্রশ্নাবলি (FAQ)
এই অংশে SSH ব্যবহার সংক্রান্ত সাধারণ প্রশ্ন ও সমস্যাগুলি সমাধান করা হয়েছে।
প্রশ্ন ১: কেন SSH সংযোগ প্রত্যাখ্যান করা হচ্ছে?
সম্ভাব্য কারণসমূহ:
- SSH সার্ভিস চালু নেই →
sudo systemctl status sshদিয়ে পরীক্ষা - ফায়ারওয়াল SSH ব্লক করছে →
sudo ufw allow sshদিয়ে অনুমোদন দিন - কাস্টম পোর্ট ব্যবহার করা হচ্ছে →
ssh -p <port> username@server-ipদিয়ে সংযোগ করুন
প্রশ্ন ২: কীভাবে SSH ডিফল্ট পোর্ট পরিবর্তন করবেন?
sshd_config ফাইলটি পরিবর্তন করুন:
sudo nano /etc/ssh/sshd_config
পোর্ট পরিবর্তন করুন:
Port 2222
তারপর SSH পুনরায় চালু করুন:
sudo systemctl restart ssh
প্রশ্ন ৩: কীভাবে শুধুমাত্র নির্দিষ্ট IP গুলোকে SSH অ্যাক্সেসের অনুমতি দেবেন?
ফায়ারওয়াল সেটিংস পরিবর্তন করুন:
sudo ufw allow from 192.168.1.100 to any port 22
অথবা sshd_config ব্যবহার করুন:
AllowUsers username@192.168.1.100
৯. উপসংহার
এই গাইডে SSH এর মৌলিক বিষয় থেকে নিরাপত্তা উন্নয়ন পর্যন্ত সবকিছু আলোচনা করা হয়েছে। মূল বিষয়গুলো হল:
- পাসওয়ার্ডের পরিবর্তে পাবলিক কী প্রমাণীকরণ ব্যবহার করুন।
- উন্নত নিরাপত্তার জন্য ডিফল্ট SSH পোর্ট পরিবর্তন করুন।
- অননুমোদিত প্রবেশ রোধে রুট লগইন নিষ্ক্রিয় করুন।
- ব্রুট‑ফোর্স আক্রমণ ব্লক করতে Fail2Ban ব্যবহার।
- সমস্যার সমাধানের জন্য SSH লগ পর্যবেক্ষণ করুন।
অতিরিক্ত সম্পদ
এই সেরা অনুশীলনগুলি অনুসরণ করে, আপনি একটি নিরাপদ এবং কার্যকর SSH পরিবেশ বজায় রাখতে পারেন। 🚀


