উবুন্টু SSH কনফিগারেশন সম্পূর্ণ গাইড | ইনস্টলেশন, সিকিউরিটি উন্নতি, এবং ট্রাবলশুটিং

目次

১. পরিচিতি

Ubuntu-এ SSH সেটআপ করা দূরবর্তী সার্ভার পরিচালনার জন্য অপরিহার্য। SSH (Secure Shell) একটি প্রোটোকল যা নিরাপদ এনক্রিপ্টেড যোগাযোগ প্রদান করে, যা দূরবর্তী সার্ভার অ্যাক্সেস, কমান্ড এক্সিকিউশন এবং ফাইল ট্রান্সফারের জন্য ব্যাপকভাবে ব্যবহৃত হয়। এই গাইডে, আমরা Ubuntu-এ SSH-এর জন্য মৌলিক ইনস্টলেশন থেকে উন্নত নিরাপত্তা কনফিগারেশন পর্যন্ত সবকিছু কভার করব।

১.১ কেন Ubuntu-এ SSH সেটআপ করবেন?

১.১.১ SSH কী?

SSH (Secure Shell) নেটওয়ার্কের উপর নিরাপদ যোগাযোগের জন্য ডিজাইন করা একটি প্রোটোকল। এটি সাধারণত দূরবর্তী সার্ভারে লগইন করা, ফাইল ট্রান্সফার এবং টানেলিং (পোর্ট ফরওয়ার্ডিং)-এর জন্য ব্যবহৃত হয়। টেলনেট বা FTP-এর মতো ঐতিহ্যবাহী প্রোটোকলের বিপরীতে, SSH সকল যোগাযোগ এনক্রিপ্ট করে, যা এটিকে অত্যন্ত নিরাপদ করে তোলে।

১.১.২ কখন Ubuntu-এ SSH-এর প্রয়োজন হয়?

SSH বিভিন্ন পরিস্থিতিতে দূরবর্তী পরিচালনার জন্য উপযোগী, যেমন:

  • ক্লাউড সার্ভার পরিচালনা : AWS, GCP এবং Vultr-এর মতো ক্লাউড সার্ভিসগুলি দূরবর্তী সার্ভার অ্যাক্সেসের জন্য SSH ব্যবহার করে।
  • LAN পরিবেশে দূরবর্তী অপারেশন : দূরবর্তী কাজের জন্য অভ্যন্তরীণ সার্ভার বা ডেভেলপমেন্ট মেশিনে SSH-এর মাধ্যমে অ্যাক্সেস।
  • IoT ডিভাইস পরিচালনা : Raspberry Pi-এর মতো এমবেডেড ডিভাইসগুলিকে দূরবর্তীভাবে নিয়ন্ত্রণ।

ডিফল্টভাবে, Ubuntu-এ SSH নিষ্ক্রিয় থাকে। এটি ব্যবহার করার জন্য, আপনাকে এটি ম্যানুয়ালি ইনস্টল এবং কনফিগার করতে হবে।

২. মৌলিক SSH কনফিগারেশন

Ubuntu-এ SSH ব্যবহার করার জন্য, আপনাকে SSH সার্ভার (OpenSSH) ইনস্টল করতে হবে এবং এটি সঠিকভাবে কনফিগার করতে হবে। এই বিভাগে ইনস্টলেশন, মৌলিক সেটিংস, ফায়ারওয়াল কনফিগারেশন এবং আপনার সার্ভারে কানেক্ট করার পদ্ধতি কভার করা হয়েছে।

২.১ OpenSSH ইনস্টল এবং শুরু করা

২.১.১ OpenSSH কী?

OpenSSH (Open Secure Shell) SSH প্রোটোকলের একটি ওপেন-সোর্স ইমপ্লিমেন্টেশন। এটি দূরবর্তী কানেকশন, নিরাপদ ফাইল ট্রান্সফার (SCP এবং SFTP) এবং পোর্ট ফরওয়ার্ডিং সমর্থন করে।

২.১.২ OpenSSH ইনস্টল করা

ডিফল্টভাবে, Ubuntu-এ SSH সার্ভার প্রি-ইনস্টল থাকে না। এটি ইনস্টল করার জন্য নিম্নলিখিত কমান্ড ব্যবহার করুন:

sudo apt update && sudo apt install -y openssh-server

এই কমান্ডটি প্যাকেজ লিস্ট আপডেট করে এবং OpenSSH সার্ভার ইনস্টল করে।

২.১.৩ SSH সার্ভার শুরু এবং এনেবল করা

ইনস্টল করার পর, SSH সার্ভার শুরু করুন এবং বুটে লঞ্চ করার জন্য এটি এনেবল করুন।

sudo systemctl enable --now ssh

enable অপশনটি নিশ্চিত করে যে OS বুট করার সময় SSH স্বয়ংক্রিয়ভাবে শুরু হয়।

২.১.৪ SSH স্ট্যাটাস যাচাই করা

SSH সার্ভার চলছে কিনা চেক করার জন্য ব্যবহার করুন:

systemctl status ssh

যদি আপনি নিম্নলিখিতের মতো আউটপুট দেখেন, তাহলে SSH সঠিকভাবে চলছে:

● ssh.service - OpenBSD Secure Shell server
   Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
   Active: active (running) since Fri 2025-02-28 12:00:00 UTC; 5min ago

যদি আপনি inactive (dead) বা failed দেখেন, তাহলে সার্ভিস ম্যানুয়ালি শুরু করুন:

sudo systemctl start ssh

২.২ ফায়ারওয়াল কনফিগার করা (UFW)

Ubuntu ufw (Uncomplicated Firewall) প্রদান করে সহজ ফায়ারওয়াল পরিচালনার জন্য। আপনাকে SSH কানেকশন অনুমোদন করার জন্য UFW কনফিগার করতে হবে।

২.২.১ UFW স্ট্যাটাস চেক করা

বর্তমান ফায়ারওয়াল স্ট্যাটাস চেক করার জন্য ব্যবহার করুন:

sudo ufw status

উদাহরণ আউটপুট (যদি UFW নিষ্ক্রিয় হয়):

Status: inactive

উদাহরণ আউটপুট (যদি UFW সক্রিয় হয়):

Status: active
To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       Anywhere

২.২.২ SSH ট্রাফিক অনুমোদন করা

ডিফল্ট পোর্ট 22-এ SSH কানেকশন অনুমোদন করার জন্য চালান:

sudo ufw allow ssh

বিকল্পভাবে, পোর্টটি স্পষ্টভাবে নির্দিষ্ট করুন:

sudo ufw allow 22/tcp

২.২.৩ UFW সক্রিয় করা

যদি UFW নিষ্ক্রিয় হয়, তাহলে এটি সক্রিয় করুন:

sudo ufw enable

UFW সক্রিয় করার আগে, নিশ্চিত করুন যে SSH অনুমোদিত, অন্যথায় আপনি নিজেকে লক আউট করতে পারেন।

২.২.৪ UFW সেটিংস যাচাই করা

ফায়ারওয়াল রুলগুলি সঠিকভাবে প্রয়োগ হয়েছে কিনা চেক করুন:

sudo ufw status verbose

উদাহরণ আউটপুট:

Status: active
To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       Anywhere
22/tcp (v6)                ALLOW       Anywhere (v6)

যদি আপনি এটি দেখেন, ফায়ারওয়ালের মাধ্যমে SSH অনুমোদিত।

২.৩ SSH-এ সংযোগ

একবার SSH সার্ভার চালু হলে, আপনি ক্লায়েন্ট পিসি থেকে সংযোগ করতে পারেন।

২.৩.১ লিনাক্স/macOS থেকে সংযোগ

লিনাক্স বা macOS-এ, একটি টার্মিনাল খুলে চালান:

ssh username@server-ip-address

উদাহরণ:

ssh user@192.168.1.100

প্রথম সংযোগে, আপনি এই রকম একটি নিরাপত্তা সতর্কতা দেখতে পারেন:

The authenticity of host '192.168.1.100 (192.168.1.100)' can't be established.
ECDSA key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.
Are you sure you want to continue connecting (yes/no)?

yes টাইপ করে এন্টার চাপুন চালিয়ে যেতে।

২.৩.২ উইন্ডোজ থেকে সংযোগ

উইন্ডোজে, আপনি PowerShell অথবা PuTTY ব্যবহার করে SSH এর মাধ্যমে সংযোগ করতে পারেন।

PowerShell ব্যবহার করে
Windows 10 এবং পরবর্তী সংস্করণে PowerShell-এ একটি SSH ক্লায়েন্ট অন্তর্ভুক্ত আছে। নিম্নলিখিতভাবে সংযোগ করুন:

ssh username@server-ip-address

PuTTY ব্যবহার করে

  1. অফিশিয়াল সাইট থেকে PuTTY ডাউনলোড এবং ইনস্টল করুন।
  2. PuTTY খুলে Host Name (or IP address) ফিল্ডে সার্ভারের IP ঠিকানা লিখুন।
  3. Connection type-কে SSH সেট করুন এবং Open-এ ক্লিক করুন।
  4. সংযোগের জন্য আপনার ইউজারনেম এবং পাসওয়ার্ড দিন।

৩. SSH নিরাপত্তা উন্নত করা

SSH রিমোট অ্যাক্সেসের জন্য একটি শক্তিশালী টুল, তবে ডিফল্ট সেটিংস রেখে দিলে নিরাপত্তা ঝুঁকি তৈরি হতে পারে। আক্রমণকারীরা প্রায়ই ব্রুট ফোর্স আক্রমণ বা পোর্ট স্ক্যানিং ব্যবহার করে SSH সার্ভারকে লক্ষ্য করে। আরও নিরাপদ SSH পরিবেশ তৈরি করতে সঠিক নিরাপত্তা কনফিগারেশন প্রয়োগ করা অপরিহার্য।

৩.১ রুট লগইন নিষ্ক্রিয় করা

ডিফল্টভাবে, উবুন্টু SSH এর মাধ্যমে রুট লগইন অনুমোদন করতে পারে। রুট অ্যাকাউন্টের পূর্ণ সিস্টেম অধিকার থাকায় এটি আক্রমণকারীদের সাধারণ লক্ষ্য। রুট লগইন নিষ্ক্রিয় করে সাধারণ ইউজার অ্যাকাউন্ট ব্যবহার করলে নিরাপত্তা উল্লেখযোগ্যভাবে বৃদ্ধি পায়।

৩.১.১ কনফিগারেশন ধাপসমূহ

  1. SSH কনফিগারেশন ফাইল /etc/ssh/sshd_config সম্পাদনা করুন।
    sudo nano /etc/ssh/sshd_config
    
  1. নিম্নলিখিত লাইনটি খুঁজে PermitRootLogin no এ পরিবর্তন করুন।
    PermitRootLogin no
    
  1. ফাইলটি সংরক্ষণ করুন এবং SSH সার্ভিস রিস্টার্ট করুন।
    sudo systemctl restart ssh
    
  1. সেটিংটি প্রয়োগ হয়েছে কিনা যাচাই করুন।
    sudo grep PermitRootLogin /etc/ssh/sshd_config
    

যদি আউটপুটে PermitRootLogin no দেখা যায়, তবে সেটিংটি সফলভাবে প্রয়োগ হয়েছে।

৩.২ পাসওয়ার্ড অথেনটিকেশন নিষ্ক্রিয় এবং পাবলিক কী অথেনটিকেশন সক্রিয় করা

পাবলিক কী অথেনটিকেশন ব্যবহার করা পাসওয়ার্ড অথেনটিকেশনের তুলনায় অনেক নিরাপদ। পাবলিক কী অথেনটিকেশনে আপনাকে পাসওয়ার্ড দিতে হয় না, ফলে ব্রুট ফোর্স আক্রমণের ঝুঁকি কমে।

৩.২.১ SSH কী পেয়ার তৈরি করা

আপনার লোকাল পিসিতে একটি SSH কী পেয়ার তৈরি করুন:

ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa

এটি দুটি ফাইল তৈরি করবে:

  • প্রাইভেট কী (id_rsa)এটি আপনার লোকাল পিসিতে রাখুন (কখনো পাবলিকভাবে শেয়ার করবেন না)
  • পাবলিক কী (id_rsa.pub)এটি সার্ভারে কপি করুন

৩.২.২ পাবলিক কী সার্ভারে কপি করা

আপনার পাবলিক কী সার্ভারে কপি করতে নিম্নলিখিত কমান্ড ব্যবহার করুন:

ssh-copy-id username@server-ip-address

৩.২.৩ পাসওয়ার্ড অথেনটিকেশন নিষ্ক্রিয় করা

SSH কনফিগারেশন ফাইল সম্পাদনা করুন:

sudo nano /etc/ssh/sshd_config

নিম্নলিখিত লাইনটি খুঁজে পরিবর্তন করুন:

PasswordAuthentication no

পরিবর্তন প্রয়োগের জন্য SSH রিস্টার্ট করুন:

sudo systemctl restart ssh

৩.৩ নির্দিষ্ট ইউজারদের জন্য SSH অ্যাক্সেস সীমাবদ্ধ করা

নিরাপত্তা বাড়াতে, আপনি SSH অ্যাক্সেস নির্দিষ্ট ইউজারদের মধ্যে সীমাবদ্ধ করতে পারেন।

৩.৩.১ কনফিগারেশন ধাপসমূহ

  1. SSH কনফিগারেশন ফাইল খুলুন।
    sudo nano /etc/ssh/sshd_config
    
  1. অনুমোদিত ইউজার নির্ধারণের জন্য নিম্নলিখিত লাইনটি যোগ করুন।
    AllowUsers user1 user2
    
  1. পরিবর্তন প্রয়োগের জন্য SSH রিস্টার্ট করুন।
    sudo systemctl restart ssh
    

৩.৪ SSH পোর্ট পরিবর্তন করা

ডিফল্ট SSH পোর্ট (22) প্রায়ই আক্রমণকারীদের লক্ষ্য হয়। এটিকে অ-স্ট্যান্ডার্ড পোর্টে পরিবর্তন করলে স্বয়ংক্রিয় আক্রমণের ঝুঁকি কমে।

৩.৪.১ কনফিগারেশন ধাপসমূহ

  1. SSH কনফিগারেশন ফাইল খুলুন।
    sudo nano /etc/ssh/sshd_config
    
  1. নিম্নলিখিত লাইনটি খুঁজে বের করুন এবং একটি কাস্টম পোর্টে পরিবর্তন করুন (যেমন, 2200 )।
    Port 2200
    
  1. ফাইলটি সংরক্ষণ করুন এবং SSH পুনরায় চালু করুন।
    sudo systemctl restart ssh
    

3.4.2 ফায়ারওয়াল সেটিংস আপডেট করা

SSH পোর্ট পরিবর্তনের পরে, নতুন পোর্টটি UFW এর মাধ্যমে অনুমোদন করুন:

sudo ufw allow 2200/tcp

সেটিংস যাচাই করুন:

sudo ufw status

3.5 Fail2Ban দিয়ে ব্রুট ফোর্স আক্রমণ প্রতিরোধ

Fail2Ban একটি টুল যা ব্যর্থ SSH লগইন প্রচেষ্টা সনাক্ত করে এবং আক্রমণকারী IP ঠিকানাকে সাময়িকভাবে ব্লক করে।

3.5.1 Fail2Ban ইনস্টল করা

sudo apt install fail2ban -y

3.5.2 কনফিগারেশন ফাইল তৈরি করা

ডিফল্ট কনফিগারেশন ফাইলটি কপি করুন:

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

কনফিগারেশন ফাইলটি সম্পাদনা করুন:

sudo nano /etc/fail2ban/jail.local

নিম্নরূপ SSH সেকশনটি পরিবর্তন করুন:

[sshd]
enabled = true
port = 2200
maxretry = 3
findtime = 600
bantime = 3600

3.5.3 Fail2Ban পুনরায় চালু করা

পরিবর্তনগুলি প্রয়োগ করতে Fail2Ban পুনরায় চালু করুন:

sudo systemctl restart fail2ban

3.5.4 ব্যান তালিকা পরীক্ষা করা

কোন IP গুলি ব্যান হয়েছে তা পরীক্ষা করতে:

sudo fail2ban-client status sshd

সারাংশ

এই বিভাগে, আমরা গুরুত্বপূর্ণ SSH নিরাপত্তা উন্নয়নগুলি কভার করেছি, যার মধ্যে রয়েছে:

  • রুট লগইন নিষ্ক্রিয় করা
  • পাসওয়ার্ড প্রমাণীকরণ নিষ্ক্রিয় করা এবং পাবলিক কী প্রমাণীকরণ সক্রিয় করা
  • নির্দিষ্ট ব্যবহারকারীদের জন্য SSH অ্যাক্সেস সীমাবদ্ধ করা
  • SSH পোর্ট পরিবর্তন করা
  • ব্রুট ফোর্স আক্রমণ ব্লক করতে Fail2Ban ব্যবহার করা

এই ব্যবস্থা গুলি প্রয়োগ করে, আপনি একটি নিরাপদ SSH পরিবেশ তৈরি করতে পারেন।

4. উন্নত SSH কনফিগারেশন

SSH নিরাপত্তা কনফিগার করার পরে, আপনি ব্যবহারযোগ্যতা এবং নিরাপত্তা উন্নত করতে উন্নত সেটিংস ব্যবহার করতে পারেন। এই বিভাগে Ubuntu 22.10 এবং পরবর্তী সংস্করণে ssh.socket পরিচালনা, SSH টানেলিং (পোর্ট ফরোয়ার্ডিং), একাধিক SSH পোর্ট সেটআপ, এবং নির্দিষ্ট IP ঠিকানার জন্য SSH অ্যাক্সেস সীমাবদ্ধ করা নিয়ে আলোচনা করা হয়েছে।

4.1 Ubuntu 22.10 এবং পরবর্তী সংস্করণে ssh.socket ব্যবহার করা

Ubuntu 22.10 থেকে, SSH সার্ভিস ম্যানেজমেন্ট ssh.service থেকে ssh.socket এ পরিবর্তিত হতে পারে। এটি সংযোগের অনুরোধ পাওয়া মাত্র SSH ডায়নামিকভাবে শুরু করতে দেয়, ফলে রিসোর্স ব্যবহার কমে।

4.1.1 ssh.socket স্ট্যাটাস পরীক্ষা করা

ssh.socket সক্রিয় আছে কিনা পরীক্ষা করতে, চালান:

sudo systemctl status ssh.socket

উদাহরণ আউটপুট (যদি সক্রিয় থাকে):

● ssh.socket - OpenSSH Server Socket
   Loaded: loaded (/lib/systemd/system/ssh.socket; enabled; vendor preset: enabled)
   Active: active (listening) since Fri 2025-02-28 12:00:00 UTC

4.1.2 ssh.socket সক্রিয় বা নিষ্ক্রিয় করা

যদি ssh.socket নিষ্ক্রিয় থাকে, নিম্নলিখিতভাবে সক্রিয় করুন:

sudo systemctl enable --now ssh.socket

প্রচলিত ssh.service এ ফিরে যেতে, ssh.socket নিষ্ক্রিয় করুন এবং পরিবর্তে ssh.service সক্রিয় করুন:

sudo systemctl disable --now ssh.socket
sudo systemctl enable --now ssh.service

4.2 SSH টানেলিং (পোর্ট ফরোয়ার্ডিং)

SSH টানেলিং রিমোট সার্ভার এবং লোকাল পিসি এর মধ্যে নিরাপদ ডেটা ট্রান্সমিশন সম্ভব করে, বাহ্যিক নেটওয়ার্ক বাইপাস করে।

4.2.1 লোকাল পোর্ট ফরোয়ার্ডিং

রিমোট ডাটাবেস বা ওয়েব সার্ভার নিরাপদে অ্যাক্সেস করার জন্য উপযোগী।

উদাহরণ: আপনার লোকাল পিসি থেকে রিমোট MySQL সার্ভার (পোর্ট 3306) এ সংযোগ

ssh -L 3306:localhost:3306 username@server-ip-address

4.2.2 রিমোট পোর্ট ফরোয়ার্ডিং

SSH এর মাধ্যমে একটি লোকাল সার্ভিস রিমোট সার্ভারে প্রকাশ করে।

উদাহরণ: একটি লোকাল ওয়েব সার্ভার (পোর্ট 80) রিমোট সার্ভারের পোর্ট 8080 এ ফরোয়ার্ড করা

ssh -R 8080:localhost:80 username@server-ip-address

4.2.3 ডাইনামিক পোর্ট ফরোয়ার্ডিং

SSH কে একটি SOCKS প্রক্সি হিসেবে রূপান্তরিত করে, যাতে গোপনীয়ভাবে ওয়েব ব্রাউজ করা যায়।

উদাহরণ: লোকাল পোর্ট 1080 এ একটি SOCKS প্রক্সি তৈরি করা

ssh -D 1080 username@server-ip-address

4.3 একাধিক SSH পোর্টে শোনার ব্যবস্থা

ডিফল্টভাবে, SSH একটি পোর্টে (পোর্ট 22) শোনে। একাধিক পোর্ট কনফিগার করলে অ্যাক্সেসের নমনীয়তা বাড়ে।

4.3.1 কনফিগারেশন ধাপসমূহ

  1. SSH কনফিগারেশন ফাইলটি সম্পাদনা করুন।
    sudo nano /etc/ssh/sshd_config
    
  1. একাধিক পোর্ট এন্ট্রি যোগ করুন।
    Port 22
    Port 2200
    
  1. SSH পুনরায় চালু করুন।
    sudo systemctl restart ssh
    

৪। ফায়ারওয়ালে নতুন পোর্টটি অনুমোদন করুন।

sudo ufw allow 2200/tcp

৪.৪ নির্দিষ্ট IP ঠিকানাগুলিতে SSH অ্যাক্সেস সীমাবদ্ধ করা

নিরাপত্তা বাড়াতে, আপনি নির্দিষ্ট IP ঠিকানাগুলিতে SSH অ্যাক্সেস সীমিত করতে পারেন।

৪.৪.১ /etc/hosts.allow কনফিগার করা

নির্দিষ্ট IP ঠিকানাগুলি থেকে শুধুমাত্র SSH অ্যাক্সেস অনুমোদন করতে সম্পাদনা করুন:

sudo nano /etc/hosts.allow

নিম্নলিখিত লাইনটি যোগ করুন (192.168.1.100-কে অনুমোদিত IP ঠিকানায় পরিবর্তন করুন):

sshd: 192.168.1.100

৪.৪.২ /etc/hosts.deny কনফিগার করা

ডিফল্টভাবে অন্যান্য সব IP ব্লক করতে:

sudo nano /etc/hosts.deny
sshd: ALL

এটি নিশ্চিত করে যে শুধুমাত্র hosts.allow-এ তালিকাভুক্ত IP গুলি SSH-এ অ্যাক্সেস করতে পারবে।

সারাংশ

এই বিভাগে উন্নত SSH সেটিংসগুলি কভার করা হয়েছে, যার মধ্যে রয়েছে:

  • Ubuntu 22.10 এবং পরবর্তী সংস্করণে ssh.socket পরিচালনা
  • নিরাপদ সংযোগের জন্য SSH টানেলিং (পোর্ট ফরোয়ার্ডিং) ব্যবহার
  • একাধিক SSH পোর্টে শোনার ব্যবস্থা
  • নির্দিষ্ট IP-তে SSH অ্যাক্সেস সীমাবদ্ধ করা

এই সেটিংসগুলি প্রয়োগ করলে SSH নিরাপত্তা এবং ব্যবহারযোগ্যতা উন্নত হয়।

৫. SSH সমস্যার সমাধান

সঠিক কনফিগারেশন সত্ত্বেও, SSH সমস্যাগুলি ঘটতে পারে এই বিভাগে সাধারণ SSH সমস্যার সমাধান প্রদান করা হয়েছে।

৫.১ SSH-এ সংযোগ করা যাচ্ছে না

যদি আপনি Connection refused বা টাইমআউট ত্রুটি পান, নিম্নলিখিতগুলি পরীক্ষা করুন।

৫.১.১ SSH সেবা চলছে না

SSH সেবার অবস্থা যাচাই করুন:

sudo systemctl status ssh

সমাধান:

  • যদি Active: inactive (dead) বা failed হয়, তবে SSH পুনরায় চালু করুন।
    sudo systemctl restart ssh
    
  • SSH-কে স্বয়ংক্রিয়ভাবে শুরু করার জন্য সক্রিয় করুন।
    sudo systemctl enable ssh
    

৫.১.২ ফায়ারওয়াল SSH ব্লক করছে

UFW-র মাধ্যমে SSH অনুমোদিত আছে কিনা নিশ্চিত করুন:

sudo ufw status

সমাধান: যদি SSH অনুমোদিত না থাকে:

sudo ufw allow 22/tcp

যদি কাস্টম পোর্ট ব্যবহার করা হয়:

sudo ufw allow 2200/tcp

৫.২ প্রমাণীকরণ ত্রুটি

যদি SSH লগইন প্রচেষ্টা প্রত্যাখ্যান করে, নিম্নলিখিতগুলি পরীক্ষা করুন:

৫.২.১ ভুল ব্যবহারকারীর নাম বা পাসওয়ার্ড

আপনি সঠিক ব্যবহারকারীর নাম ব্যবহার করছেন কিনা নিশ্চিত করুন:

ssh username@server-ip-address

৫.২.২ পাবলিক কী প্রমাণীকরণ সমস্যাগুলি

আপনার পাবলিক কী সঠিকভাবে ~/.ssh/authorized_keys-এ সংরক্ষিত আছে কিনা যাচাই করুন।

cat ~/.ssh/authorized_keys

৫.২.৩ ভুল অনুমতিগুলি

SSH ডিরেক্টরি এবং ফাইলগুলির সঠিক অনুমতি আছে কিনা নিশ্চিত করুন:

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

সারাংশ

এই বিভাগে সাধারণ SSH সমস্যাগুলি এবং তাদের সমাধান কভার করা হয়েছে, যার মধ্যে রয়েছে:

  • SSH চলছে কিনা পরীক্ষা করা
  • ফায়ারওয়াল SSH ব্লক করছে না তা নিশ্চিত করা
  • প্রমাণীকরণ সমস্যাগুলি সমাধান করা

এই ট্রাবলশুটিং ধাপগুলি ব্যবহার করে দ্রুত SSH সংযোগ সমস্যাগুলি সমাধান করুন।

৬. FAQ (প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী)

এই বিভাগে সাধারণ SSH-সম্পর্কিত প্রশ্ন এবং সমাধানগুলি আলোচনা করা হয়েছে, যা আপনার SSH অভিজ্ঞতা উন্নত করে এবং নিরাপত্তা বজায় রাখে।

৬.১ কীভাবে SSH টাইমআউট প্রতিরোধ করবেন?

যদি SSH সংযোগগুলি নিষ্ক্রিয়তার পর বিচ্ছিন্ন হয়, নিম্নলিখিত সেটিংসগুলি চেষ্টা করুন।

৬.১.১ সার্ভার-সাইড কনফিগারেশন

/etc/ssh/sshd_config সম্পাদনা করে নিম্নলিখিতটি যোগ করুন:

ClientAliveInterval 60
ClientAliveCountMax 3

পরিবর্তনগুলি প্রয়োগ করতে SSH পুনরায় চালু করুন:

sudo systemctl restart ssh

৬.১.২ ক্লায়েন্ট-সাইড কনফিগারেশন

স্থানীয় SSH কনফিগারেশন ফাইল ~/.ssh/config পরিবর্তন করুন:

Host *
    ServerAliveInterval 60
    ServerAliveCountMax 3

৬.২ যদি আমি আমার SSH পাসওয়ার্ড ভুলে যাই তাহলে কী করব?

৬.২.১ যদি আপনার সার্ভারের শারীরিক অ্যাক্সেস থাকে

  1. GRUB মেনু থেকে রিকভারি মোডে বুট করুন।

  2. নিম্নলিখিত কমান্ড দিয়ে পাসওয়ার্ড রিসেট করুন:

    passwd username
    
  1. সিস্টেম পুনরায় চালু করুন।

৬.২.২ যদি আপনি শারীরিকভাবে সার্ভারে প্রবেশ করতে না পারেন (যেমন, ক্লাউড VPS)

  • ক্লাউড প্রদানকারীর কনসোল ফিচার ব্যবহার করে সার্ভারে প্রবেশ করুন।

  • পাসওয়ার্ডের উপর নির্ভর না করে SSH কী প্রমাণীকরণ সেট আপ করুন।

৬.৩ Windows-এ SSH কীভাবে ব্যবহার করবেন?

৬.৩.১ PowerShell ব্যবহার করে

Windows 10 এবং পরবর্তী সংস্করণ একটি অন্তর্নির্মিত SSH ক্লায়েন্ট রয়েছে। PowerShell খুলে চালান:

ssh username@server-ip-address

৬.৩.২ PuTTY ব্যবহার করে

  1. ডাউনলোড এবং ইনস্টল করুন PuTTY
  2. সার্ভারের IP Host Name (or IP address) এ লিখুন ।
  3. SSH কে সংযোগের ধরন হিসেবে নির্বাচন করুন এবং Open ক্লিক করুন ।
  4. আপনার ইউজারনেম এবং পাসওয়ার্ড দিয়ে লগইন করুন।

6.4 Ubuntu WSL (Windows Subsystem for Linux)-এ SSH কীভাবে সেট আপ করবেন?

WSL-এ SSH সক্রিয় করতে, নিম্নলিখিত ধাপগুলি অনুসরণ করুন।

6.4.1 SSH সার্ভার ইনস্টল করা

sudo apt update && sudo apt install openssh-server

6.4.2 SSH কনফিগার করা

/etc/ssh/sshd_config সম্পাদনা করুন এবং পাসওয়ার্ড প্রমাণীকরণ সক্রিয় করুন:

PasswordAuthentication yes

ডিফল্টভাবে WSL systemd ব্যবহার করে না, তাই SSH ম্যানুয়ালি শুরু করুন:

sudo service ssh start

6.5 আমি কোন অতিরিক্ত নিরাপত্তা ব্যবস্থা গ্রহণ করা উচিত?

6.5.1 Fail2Ban ইনস্টল করা

Fail2Ban ইনস্টল করে ব্রুট-ফোর্স আক্রমণ প্রতিরোধ করুন:

sudo apt install fail2ban -y

কনফিগারেশন ফাইল /etc/fail2ban/jail.local সম্পাদনা করুন:

[sshd]
enabled = true
port = 22
maxretry = 3
findtime = 600
bantime = 3600

Fail2Ban পুনরায় চালু করুন:

sudo systemctl restart fail2ban

6.5.2 SSH পোর্ট পরিবর্তন করা

ডিফল্ট SSH পোর্ট পরিবর্তন করতে /etc/ssh/sshd_config পরিবর্তন করুন:

Port 2200

SSH পুনরায় চালু করুন এবং ফায়ারওয়াল সেটিংস আপডেট করুন:

sudo ufw allow 2200/tcp

6.6 রিয়েল-টাইমে SSH লগ কীভাবে মনিটর করবেন?

রিয়েল-টাইমে SSH লগ দেখতে, ব্যবহার করুন:

sudo journalctl -u ssh -f

পূর্বের লগ চেক করতে:

sudo cat /var/log/auth.log | grep ssh

6.7 SSH ব্যবহারকে কীভাবে আরও সুবিধাজনক করবেন?

6.7.1 সহজ লগইনের জন্য .ssh/config ব্যবহার করা

~/.ssh/config-এ প্রায়ই ব্যবহৃত SSH সংযোগগুলি সংরক্ষণ করুন:

Host myserver
    HostName 192.168.1.100
    User user
    Port 2200
    IdentityFile ~/.ssh/id_rsa

এখন আপনি নিম্নলিখিত দিয়ে সংযোগ করতে পারেন:

ssh myserver

6.7.2 পুনরাবৃত্তি পাসওয়ার্ড এন্ট্রি এড়াতে ssh-agent ব্যবহার করা

চালান:

eval $(ssh-agent -s)
ssh-add ~/.ssh/id_rsa

এটি প্রতিবার পাসফ্রেজ না দিয়ে SSH সংযোগের অনুমতি দেয়।

সারাংশ

এই বিভাগে সাধারণ SSH-সংশ্লিষ্ট প্রশ্নের উত্তর প্রদান করা হয়েছে, যার মধ্যে রয়েছে:

  • SSH টাইমআউট প্রতিরোধ করা
  • ভুলে যাওয়া পাসওয়ার্ড থেকে পুনরুদ্ধার করা
  • Windows এবং WSL-এ SSH ব্যবহার করা
  • অতিরিক্ত নিরাপত্তা ব্যবস্থা প্রয়োগ করা
  • SSH লগ মনিটর করা
  • SSH ব্যবহারকে আরও সুবিধাজনক করা

এই টিপসগুলি অনুসরণ করে, আপনি রিমোট সার্ভার ম্যানেজমেন্টের জন্য একটি নিরাপদ এবং কার্যকরী SSH পরিবেশ তৈরি করতে পারেন।

সম্পর্কিত প্রবন্ধ

Related

১. পরিচিতি উবুন্টুতে SSH ব্যবহার করে আপনি নিরাপদে আপনার সার্ভার বা পিসি রিমোটলি অ্যাক্সেস ও পরিচালনা করতে পারেন। এই গাইড[…]

侍エンジニア塾