Ubuntu SSH सेटिङ पूर्ण मार्गदर्शिका | स्थापना, सुरक्षा वृद्धि, समस्या समाधान

目次

1. परिचय

Ubuntu मा SSH सेटअप गर्नु रिमोट सर्भरको व्यवस्थापनका लागि अत्यन्त महत्वपूर्ण छ। SSH (Secure Shell) ले सुरक्षित एन्क्रिप्टेड सञ्चार प्रदान गर्ने प्रोटोकल हो, जसलाई दूरीबाट सर्भरमा पहुँच गर्न, कमान्डहरू चलाउन वा फाइलहरू स्थानान्तरण गर्नका लागि व्यापक रूपमा प्रयोग गरिन्छ। यो लेखमा, Ubuntu मा SSH को सेटअप विधि, आधारभूत स्थापना प्रक्रियाबाट उन्नत सुरक्षा उपायहरू सम्म विस्तृत रूपमा व्याख्या गरिन्छ।

1.1 Ubuntu मा SSH सेटअप गर्ने कारण

1.1.1 SSH के हो?

SSH (Secure Shell) नेटवर्कमा सुरक्षित रूपमा सञ्चार गर्नका लागि प्रोटोकल हो। सामान्यतया, SSH लाई रिमोट सर्भरमा लगइन, फाइल स्थानान्तरण, टनलिङ (पोर्ट फर्वार्डिङ) आदि का लागि प्रयोग गरिन्छ। SSH ले परम्परागत Telnet वा FTP भन्दा फरक छ किनकि यसको सञ्चार सामग्री एन्क्रिप्टेड हुन्छ, जसले गर्दा यसको सुरक्षा उच्च हुन्छ।

1.1.2 Ubuntu मा SSH आवश्यक हुने अवस्थाहरू

Ubuntu लाई रिमोट रूपमा व्यवस्थापन गर्ने परिदृश्यहरूमा निम्नहरू जस्ता छन्।
  • क्लाउड सर्भरको व्यवस्थापन:AWS, GCP, Vultr जस्ता क्लाउड सेवाहरूमा, SSH प्रयोग गरेर रिमोट रूपमा सर्भरमा जडान गरिन्छ।
  • LAN वातावरणमा रिमोट अपरेसन:कम्पनी भित्रका सर्भरहरू वा विकास मेसिनहरूलाई SSH मार्फत पहुँच गरेर रिमोट कार्य गर्नुहोस्।
  • IoT डिभाइसको व्यवस्थापन:Raspberry Pi जस्ता एम्बेडेड डिभाइसहरूलाई दूरीबाट नियन्त्रण गर्नुहोस्।
Ubuntu को डिफल्ट सेटिङमा, SSH सर्भर निष्क्रिय छ। त्यसैले, SSH प्रयोग गर्नका लागि म्यानुअल रूपमा स्थापना गर्नु र उपयुक्त रूपमा सेटअप गर्न आवश्यक छ।
年収訴求

2. SSH को आधारभूत सेटिङ

Ubuntu मा SSH प्रयोग गर्नको लागि, SSH सर्भर (OpenSSH) स्थापना गर्नु पर्छ र उपयुक्त सेटिङ गर्नु पर्छ। यो खण्डमा, SSH को स्थापना विधिबाट, आधारभूत सेटिङ, फायरवालको संरचना, कनेक्सन विधि बारे विस्तृत व्याख्या गरिन्छ।

2.1 OpenSSH को स्थापना र सुरुवात

2.1.1 OpenSSH भनेको के हो?

OpenSSH (Open Secure Shell) SSH प्रोटोकल कार्यान्वयन गर्ने ओपन सोर्स सफ्टवेयर हो। रिमोट कनेक्सन मात्र होइन, सुरक्षित फाइल ट्रान्सफर (SCP वा SFTP) र पोर्ट फर्वार्डिङ जस्ता कार्यक्षमताहरू पनि समावेश छन्।

2.1.2 OpenSSH को स्थापना

Ubuntu मा, SSH सर्भर डिफल्ट रूपमा स्थापना गरिएको हुँदैन, त्यसैले निम्न कमान्डले स्थापना गरिन्छ।
sudo apt update && sudo apt install -y openssh-server
यो कमान्डले प्याकेज सूचीलाई नवीनतम अवस्थामा अपडेट गर्दछ र OpenSSH सर्भर स्थापना गर्दछ।

2.1.3 SSH सर्भरको सुरुवात र स्वचालित सुरुवात सेटिङ

स्थापना सम्पन्न भएपछि, SSH सर्भर सुरु गर्नुहोस् र स्वचालित सुरुवात सक्षम गर्नुहोस्।
sudo systemctl enable --now ssh
enable विकल्पले OS सुरुवातमा स्वचालित रूपमा SSH सेवा सुरु हुने गर्दछ।

2.1.4 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

2.2 फायरवाल (UFW) को सेटिङ

Ubuntu मा, ufw (Uncomplicated Firewall) नामक सजिलो सेटिङ गर्न सकिने फायरवाल तयार छ। SSH कनेक्सन अनुमति दिनको लागि, UFW लाई उपयुक्त रूपमा सेटिङ गर्नुहोस्।

2.2.1 UFW को अवस्था जाँच

पहिले, हालको फायरवालको अवस्था जाँच गर्नुहोस्।
sudo ufw status
आउटपुट उदाहरण (UFW अक्षम भएको अवस्थामा)
Status: inactive
आउटपुट उदाहरण (UFW सक्रिय भएको अवस्थामा)
Status: active
To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       Anywhere

2.2.2 SSH सञ्चारको अनुमति

SSH को डिफल्ट पोर्ट 22 अनुमति दिनको लागि, निम्न कमान्ड कार्यान्वयन गर्नुहोस्।
sudo ufw allow ssh
वा, पोर्ट नम्बर निर्दिष्ट गरेर स्पष्ट रूपमा अनुमति दिन सकिन्छ।
sudo ufw allow 22/tcp

2.2.3 UFW को सक्रियता

UFW अक्षम भएको छ भने, निम्न कमान्डले सक्रिय गर्नुहोस्।
sudo ufw enable
UFW सक्रिय गर्दा, भविष्यका सबै प्राप्त ट्राफिक डिफल्ट रूपमा ब्लक हुने भएकाले, SSH कनेक्सन अनुमति दिइएको छ भनेर जाँचेर मात्र सक्रिय गर्नुहोस्।

2.2.4 सेटिङको जाँच

फायरवालको सेटिङ प्रतिबिम्बित भएको छ कि फेरि जाँच गर्नुहोस्।
sudo ufw status verbose
आउटपुट उदाहरण
Status: active
To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       Anywhere
22/tcp (v6)                ALLOW       Anywhere (v6)
यसरी देखाइएको छ भने, SSH कनेक्सन अनुमति दिइएको छ।

2.3 SSH को आधारभूत कनेक्सन विधि

SSH सर्भर सञ्चालनमा रहेको जाँचेर, क्लाइन्ट PC बाट वास्तविक कनेक्सन प्रयास गर्नुहोस्।

2.3.1 Linux/macOS बाट कनेक्सन

Linux वा macOS मा, टर्मिनल खोलेर निम्न कमान्ड कार्यान्वयन गर्नुहोस्।
ssh  यूजर नाम@सर्भरको IP ठेगाना
उदाहरण:
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 भर्नुहोस् र Enter थिच्नुहोस् भने कनेक्सन स्थापित हुन्छ।

2.3.2 Windows बाट कनेक्सन

Windows मा, PowerShell वा PuTTY प्रयोग गरेर SSH कनेक्सन गर्न सकिन्छ।PowerShell प्रयोग गर्दाWindows 10 वा पछाडि, PowerShell मा SSH क्लाइन्ट स्ट्यान्डर्ड रूपमा समावेश छ। निम्न कमान्ड कार्यान्वयन गर्दा, SSH कनेक्सन गर्न सकिन्छ।
ssh  यूजर नाम@सर्भरको IP ठेगाना
PuTTY प्रयोग गर्दा
  1. आधिकारिक साइट बाट PuTTY डाउनलोड र स्थापना
  2. PuTTY खोलेर, Host Name (or IP address) मा सर्भरको IP ठेगाना प्रविष्ट गर्नुहोस्
  3. Connection type लाई SSH मा सेट गर्नुहोस् र Open क्लिक गर्नुहोस्
  4. यूजर नाम र पासवर्ड प्रविष्ट गर्नुहोस्

सारांश

यो खण्डमा, Ubuntu मा SSH को आधारभूत सेटअप प्रक्रियाहरूको व्याख्या गरियो।
  • OpenSSH स्थापना गर्ने र सुरु गर्ने विधि
  • UFW मा SSH जडान अनुमति दिने सेटिङ
  • Linux/macOS र Windows मा SSH जडान विधि

3. SSH को सुरक्षा सुदृढीकरण

SSH ले रिमोट कनेक्सन सम्भव बनाउने सुविधाजनक उपकरण हो, तर यसलाई जस्ताको तस्तै प्रयोग गर्दा सुरक्षा जोखिम बढ्न सक्छ। आक्रमणकारीहरूले ब्रुट फोर्स आक्रमण वा पोर्ट स्क्यान मार्फत SSH सर्भरलाई निशाना बनाउने गर्दछन्। त्यसैले, सुरक्षित SSH वातावरण निर्माण गर्न उपयुक्त सुरक्षा सेटिङ गर्नु महत्वपूर्ण छ।

3.1 रुट प्रयोगकर्ताको लगइन निषेध

डिफल्ट रूपमा, Ubuntu को SSH सेटिङमा रुट प्रयोगकर्ताबाट लगइन अनुमति दिइएको हुन सक्छ। रुट खाता प्रणालीलाई पूर्ण रूपमा व्यवस्थापन गर्ने शक्तिशाली अधिकार राख्छ, त्यसैले आक्रमणकारीहरूको निशानामा पर्न सजिलो हुन्छ। रुट लगइनलाई निषेध गरी सामान्य प्रयोगकर्ता खाता प्रयोग गरेर सुरक्षा सुधार गर्न सकिन्छ।

3.1.1 सेटिङ प्रक्रिया

  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 भएको छ भने, सेटिङ सही रूपमा लागू भएको छ।

3.2 पासवर्ड प्रमाणीकरण निष्क्रिय र सार्वजनिक कुञ्जी प्रमाणीकरणको परिचय

SSH मा, पासवर्ड प्रमाणीकरणभन्दा सार्वजनिक कुञ्जी प्रमाणीकरण प्रयोग गर्नु सुरक्षित हुन्छ। सार्वजनिक कुञ्जी प्रमाणीकरणमा पासवर्ड 입력 गर्नु पर्दैन, SSH कुञ्जीको जोडा (सार्वजनिक कुञ्जी र गोप्य कुञ्जी) प्रयोग गरेर प्रमाणीकरण गरिन्छ, जसले ब्रुट फोर्स आक्रमणको जोखिम कम गर्छ।

3.2.1 SSH कुञ्जीको निर्माण

स्थानीय PC मा SSH कुञ्जी निर्माण गर्नुहोस्।
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa
निर्माण सम्पन्न भएपछि, निम्न दुई फाइलहरू उत्पन्न हुन्छन्।
  • गोप्य कुञ्जी (id_rsa)स्थानीय PC मा बचत गर्नुहोस् (कुनै पनि बाहिरी भागमा सार्वजनिक नगर्नुहोस्)
  • सार्वजनिक कुञ्जी (id_rsa.pub)सर्भर पक्षमा दर्ता गर्नुहोस्

3.2.2 सार्वजनिक कुञ्जीलाई सर्भरमा स्थानान्तरण

निम्न कमान्ड प्रयोग गरेर सार्वजनिक कुञ्जीलाई सर्भरमा स्थानान्तरण गर्नुहोस्।
ssh-copy-id  प्रयोगकर्ता नाम@सर्भरको IP ठेगाना

3.2.3 पासवर्ड प्रमाणीकरण निष्क्रिय

SSH को सेटिङ फाइल खोल्नुहोस्।
sudo nano /etc/ssh/sshd_config
निम्न लाइन खोज्नुहोस् र PasswordAuthentication no मा परिवर्तन गर्नुहोस्।
PasswordAuthentication no
सेटिङ लागू गर्न SSH लाई पुन: सुरु गर्नुहोस्।
sudo systemctl restart ssh

3.3 विशिष्ट प्रयोगकर्ताहरू मात्र SSH पहुँच अनुमति

SSH को सुरक्षालाई सुधार्न, SSH मा जडान गर्न सकिने प्रयोगकर्ताहरूलाई सीमित गर्न सकिन्छ।

3.3.1 सेटिङ प्रक्रिया

  1. SSH को सेटिङ फाइल /etc/ssh/sshd_config लाई खोल्नुहोस्।
sudo nano /etc/ssh/sshd_config
  1. अनुमति दिने प्रयोगकर्ताहरू निर्दिष्ट गर्नुहोस्।
AllowUsers  प्रयोगकर्ता नाम1  प्रयोगकर्ता नाम2
  1. सेटिङ लागू गर्न, SSH लाई पुन: सुरु गर्नुहोस्।
sudo systemctl restart ssh

3.4 SSH पोर्टको परिवर्तन

SSH को डिफल्ट पोर्ट (22) आक्रमणकारीहरूको निशानामा पर्न सजिलो हुन्छ, त्यसैले पोर्ट नम्बर परिवर्तन गरेर सुरक्षालाई सुधार गर्न सकिन्छ।

3.4.1 सेटिङ प्रक्रिया

  1. SSH सेटिङ फाइल खोल्नुहोस्।
sudo nano /etc/ssh/sshd_config
  1. Port 22 को लाइन खोज्नुहोस् र उदाहरणका लागि Port 2200 जस्तो परिवर्तन गर्नुहोस्।
Port 2200
  1. सेटिङ बचत गर्नुहोस् र SSH लाई पुन: सुरु गर्नुहोस्।
sudo systemctl restart ssh

3.4.2 फायरवाल सेटिङ अपडेट

पोर्ट परिवर्तन पछि, नयाँ पोर्ट नम्बरलाई 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 सेटिङ फाइलको निर्माण

Fail2Ban को सेटिङ फाइल कपी गर्नुहोस्।
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
अर्को, सेटिङ फाइल खोल्नुहोस्।
sudo nano /etc/fail2ban/jail.local
निम्न सेटिङ परिवर्तन गर्नुहोस्।
[sshd]
enabled = true
port = 2200
maxretry = 3
findtime = 600
bantime = 3600

3.5.3 Fail2Ban को पुन: सुरु

सेटिङ लागू गर्न Fail2Ban लाई पुन: सुरु गर्नुहोस्।
sudo systemctl restart fail2ban

3.5.4 Ban सूचीको जाँच

sudo fail2ban-client status sshd

सारांश

यो खण्डमा, SSH को सुरक्षालाई मजबुत बनाउने विधिहरूको व्याख्या गरियो।
  • root लगइनलाई निषेध गर्नुहोस्
  • पासवर्ड प्रमाणीकरणलाई असक्षम गर्नुहोस् र सार्वजनिक कुञ्जी प्रमाणीकरणलाई लागू गर्नुहोस्
  • विशिष्ट प्रयोगकर्ताहरूको लागि मात्र SSH पहुँच अनुमति दिनुहोस्
  • SSH पोर्ट परिवर्तन गर्नुहोस्
  • Fail2Ban लाई लागू गर्नुहोस् र अनधिकृत पहुँचलाई अवरोध गर्नुहोस्
यी उपायहरू लागू गरेर, तपाईं थप सुरक्षित SSH वातावरण निर्माण गर्न सक्नुहुन्छ।

4. SSH को उन्नत सेटिङ

SSH को आधारभूत सेटिङ र सुरक्षा मजबुत बनाउने कार्य पूरा भएपछि, अब उन्नत सेटिङ गर्नुहोस्, SSH लाई थप सुविधाजनक र सुरक्षित रूपमा उपयोग गर्न सकिन्छ। यस खण्डमा, Ubuntu २२.१० वा त्यसपछिका संस्करणहरूमा ssh.socket को व्यवस्थापन, SSH टनल (पोर्ट फर्वार्डिङ), बहु पोर्टको प्रतीक्षा सेटिङ, विशिष्ट IP ठेगानाहरूको अनुमति आदि, व्यावहारिक SSH सेटिङहरू बारे विस्तृत व्याख्या गरिन्छ।

४.१ Ubuntu २२.१० वा त्यसपछिका ssh.socket को उपयोग

Ubuntu २२.१० वा त्यसपछिका संस्करणहरूमा, SSH सेवाको व्यवस्थापन ssh.service बाट ssh.socket मा परिवर्तन हुन सक्छ। यो, SSH ले अनुरोध प्राप्त गर्दा गतिशील रूपमा सुरु हुने संयन्त्र हो, जसले स्रोतहरूको बचतमा योगदान दिन्छ।

४.१.१ 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

४.१.२ 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

४.२ SSH टनल (पोर्ट फर्वार्डिङ)

SSH टनल प्रयोग गर्दा, रिमोट सर्भर र स्थानीय PC बीच सुरक्षित सञ्चार स्थापित गर्न सकिन्छ, र बाह्य नेटवर्क बिना डाटा स्थानान्तरण गर्न सकिन्छ।

४.२.१ स्थानीय पोर्ट फर्वार्डिङ

रिमोट सर्भरमा रहेको डाटाबेस वा वेब सर्भरमा सुरक्षित पहुँच गर्न सुविधाजनक हुन्छ।उदाहरण: रिमोट MySQL सर्भर (३३०६ पोर्ट) मा स्थानीय PC बाट जडान
ssh -L 3306:localhost:3306 प्रयोगकर्ता_नाम@सर्भरको_IP_ठेगाना

४.२.२ उल्टो पोर्ट फर्वार्डिङ

बाह्य SSH सर्भर मार्फत आन्तरिक नेटवर्कको सेवालाई सार्वजनिक गर्न प्रयोग गरिन्छ।उदाहरण: स्थानीय वेब सर्भर (८० पोर्ट) लाई रिमोट सर्भरको ८०८० पोर्टमा सार्वजनिक गर्नुहोस्
ssh -R 8080:localhost:80 प्रयोगकर्ता_नाम@सर्भरको_IP_ठेगाना

४.२.३ गतिशील पोर्ट फर्वार्डिङ

SSH लाई SOCKS प्रोक्सीको रूपमा प्रयोग गर्दा, गुमनाम रूपमा इन्टरनेट ब्राउज गर्न सकिन्छ।उदाहरण: स्थानीय PC को १०८० पोर्टमा SOCKS प्रोक्सी सिर्जना गर्नुहोस्
ssh -D 1080 प्रयोगकर्ता_नाम@सर्भरको_IP_ठेगाना

४.३ बहु पोर्टमा SSH प्रतीक्षा

सामान्यतया, SSH एउटा पोर्ट (डिफल्ट २२) मा कार्य गर्दछ, तर बहु पोर्टमा प्रतीक्षा गर्दा विभिन्न नेटवर्क वातावरणसँग सामना गर्न सकिन्छ।

४.३.१ सेटिङ प्रक्रिया

  1. /etc/ssh/sshd_config सम्पादन गर्नुहोस्
sudo nano /etc/ssh/sshd_config
  1. निम्न लाइनहरू थप्नुहोस्
Port 22
Port 2200
  1. SSH लाई पुन: सुरु गर्नुहोस्
sudo systemctl restart ssh
  1. UFW मा नयाँ पोर्ट अनुमति दिनुहोस्
sudo ufw allow 2200/tcp

४.४ विशिष्ट IP ठेगाना मात्र SSH अनुमति दिनुहोस्

SSH मा पहुँच सीमित गर्दै, विशिष्ट IP ठेगानाबाट मात्र जडान अनुमति दिएर सुरक्षा मजबुत बनाउन सकिन्छ।

४.४.१ /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 को सुरक्षा र सुविधालाई सुधार गर्न सक्नुहुन्छ।

5. SSH को समस्या निवारण

SSH सेटअप गरे पनि, विभिन्न कारणहरूले गर्दा जडान हुन सक्दैन। यो खण्डमा, SSH जडान गर्दा सामान्यतया हुने समस्याहरू र तिनको समाधानहरू, समस्याहरू अनुसार व्यवस्थित गरेर व्याख्या गरिन्छ।

5.1 SSH मा जडान हुन नसक्ने अवस्था

SSH मा जडान गर्ने प्रयास गर्दा Connection refused वा समय समाप्त जस्ता त्रुटिहरू उत्पन्न हुने अवस्थामा, केही कारणहरू सम्भावित छन्।

5.1.1 SSH सेवा सञ्चालनमा नभएको

SSH सर्भर सामान्य रूपमा सुरु नभएको सम्भावना छ। पहिले, SSH को स्थिति जाँचौं।
sudo systemctl status ssh
समाधान:
  • Active: inactive (dead) वा failed को अवस्थामा, SSH लाई पुन: सुरु गर्नुहोस्।
sudo systemctl restart ssh
  • पुन: सुरु पछि स्वचालित सुरुवातलाई सक्षम बनाउन, निम्न कमान्ड चलाउनुहोस्।
sudo systemctl enable ssh

5.1.2 पोर्ट उपयुक्त रूपमा खुला नभएको

SSH पोर्ट परिवर्तन गरिएको अवस्थामा, जडान गर्दा सही पोर्ट निर्दिष्ट गर्न आवश्यक छ।
ssh -p 2200 प्रयोगकर्ता नाम@सर्भरको IP ठेगाना
यसबाहेक, खुला पोर्ट जाँच्नको लागि, निम्न कमान्ड प्रयोग गर्नुहोस्।
sudo netstat -tulnp | grep ssh
वा, ss कमान्ड पनि प्रयोग गर्न सकिन्छ।
ss -tulnp | grep ssh

5.1.3 फायरवाल (UFW) को सेटिङ जाँच

UFW ले SSH को सञ्चारलाई अवरोध नगरेको जाँच गर्नुहोस्।
sudo ufw status
SSH अनुमति नदिइएको अवस्थामा समाधान:
sudo ufw allow 22/tcp
पोर्ट परिवर्तन गरिएको छ भने, उपयुक्त पोर्टलाई अनुमति दिनुहोस्।
sudo ufw allow 2200/tcp

5.2 प्रमाणीकरण त्रुटि उत्पन्न हुने अवस्था

5.2.1 प्रयोगकर्ता नाम वा पासवर्ड गलत भएको

SSH मा लगइन गर्दा, सही प्रयोगकर्ता नाम प्रयोग गरिएको छ कि जाँच गर्नुहोस्।
ssh प्रयोगकर्ता नाम@सर्भरको IP ठेगाना

5.2.2 सार्वजनिक कुञ्जी प्रमाणीकरण सही रूपमा सेट नभएको

सार्वजनिक कुञ्जी प्रमाणीकरण प्रयोग गरिएको छ भने, सर्भरमा ~/.ssh/authorized_keys मा सही सार्वजनिक कुञ्जी दर्ता भएको छ कि जाँच गर्नुहोस्।
cat ~/.ssh/authorized_keys
स्थानीय सार्वजनिक कुञ्जी (~/.ssh/id_rsa.pub) सँग मेल खान्छ कि जाँच गर्नुहोस्।

5.2.3 .ssh डाइरेक्टरीको अनुमति उपयुक्त नभएको

SSH को सेटिङमा, कुञ्जी फाइलहरू वा .ssh डाइरेक्टरीको अनुमति कडा रूपमा व्यवस्थापन गरिन्छ।
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
यसबाहेक, /home/प्रयोगकर्ता नाम डाइरेक्टरीको अनुमति पनि उपयुक्त रूपमा सेट भएको छ कि जाँच गर्नुहोस्।
chmod 755 /home/प्रयोगकर्ता नाम

5.3 SSH जडान अस्थिर वा तुरुन्तै विच्छेद हुने अवस्था

SSH जडान अस्थिर छ र निश्चित समय पछि विच्छेद हुने अवस्थामा, सर्भर पक्ष वा क्लाइन्ट पक्षको समय समाप्त सेटिङ कारण हुन सक्छ।

5.3.1 ClientAliveInterval लाई समायोजन गर्नुहोस्

SSH को सेटिङ फाइल /etc/ssh/sshd_config खोल्नुहोस् र निम्न प्यारामिटरहरू थप्नुहोस् वा परिवर्तन गर्नुहोस्।
ClientAliveInterval 60
ClientAliveCountMax 3
सेटिङ पछि, SSH लाई पुन: सुरु गर्नुहोस्।
sudo systemctl restart ssh

5.3.2 क्लाइन्ट पक्षको सेटिङ परिवर्तन गर्नुहोस्

स्थानीय SSH क्लाइन्ट निश्चित समय पछि विच्छेद हुने अवस्थामा, क्लाइन्ट पक्षको सेटिङ फाइल (~/.ssh/config) मा यस्तो सेटिङ थप्दा सुधार हुन सक्छ।
Host *
    ServerAliveInterval 60
    ServerAliveCountMax 3

5.4 SSH लगको जाँच विधि

SSH को समस्या समाधानको लागि, लग जाँच गर्नु महत्वपूर्ण छ।

5.4.1 SSH लगको रीयलटाइम जाँच

SSH को लग रीयलटाइममा जाँच गर्नको लागि, निम्न कमान्ड चलाउनुहोस्।
sudo journalctl -u ssh -f

5.4.2 SSH लगलाई विगतका डाटाबाट जाँच

विगतका लग खोज्नको लागि, निम्न कमान्ड प्रयोग गर्नुहोस्।
sudo cat /var/log/auth.log | grep ssh
यसबाहेक, विशिष्ट त्रुटि सन्देश खोज्न पनि सकिन्छ।
sudo grep "Failed password" /var/log/auth.log

सारांश

यो खण्डमा, SSH को कनेक्सन समस्या सम्बन्धी समस्याहरू र तिनका समाधानहरू प्रस्तुत गरियो।
  • SSH सेवा सञ्चालनमा छ कि जाँच गर्नुहोस्
  • पोर्ट उपयुक्त रूपमा खुला छ कि जाँच गर्नुहोस्
  • फायरवालको सेटिङ जाँच गर्नुहोस्
  • प्रकाशित कुञ्जी प्रमाणीकरण सही रूपमा सेट गरिएको छ कि जाँच गर्नुहोस्
  • टाइमआउट समस्याको समाधान
  • SSH लगहरू जाँच गरेर समस्याको पहिचान गर्नुहोस्
SSH का समस्याहरू प्रायः सेटिङ गल्ती वा नेटवर्क वातावरणको प्रभावले उत्पन्न हुन्छन्। यस लेखको समस्या निवारण प्रयोग गरेर, तुरुन्तै समस्या समाधान गर्नुहोस्।

6. FAQ(प्रायः सोधिने प्रश्नहरू)

SSH को सेटिङ र प्रयोग सम्बन्धी सामान्य प्रश्नहरू र तिनका समाधानहरू संकलित छन्। SSH लाई थप सुविधाजनक र सुरक्षित रूपमा प्रयोग गर्नका लागि सुझावहरू प्रस्तुत गर्दछौं।

6.1 SSH जडान समयसीमा समाप्त भएमा कसरी सम्बोधन गर्ने?

SSH जडान निश्चित समय पछि विच्छेद भएमा, निम्न सेटिङहरू प्रयास गर्नुहोस्।

6.1.1 सर्वर पक्षको सेटिङ परिवर्तन

/etc/ssh/sshd_config लाई सम्पादन गर्नुहोस् र निम्न प्यारामिटरहरू सेट गर्नुहोस्।
ClientAliveInterval 60
ClientAliveCountMax 3
सेटिङ पछि, SSH लाई पुन: सुरु गर्नुहोस्।
sudo systemctl restart ssh

6.1.2 क्लाइन्ट पक्षको सेटिङ परिवर्तन

स्थानीय~/.ssh/config मा निम्न सेटिङ थप्दा, सर्वरबाट विच्छेद रोक्न सकिन्छ।
Host *
    ServerAliveInterval 60
    ServerAliveCountMax 3

6.2 पासवर्ड बिर्सिएर SSH जडान गर्न नसकिने अवस्थामा कसरी सम्बोधन गर्ने?

6.2.1 शारीरिक रूपमा सर्वरमा पहुँच गर्न सकिने अवस्था

  1. एकल प्रयोगकर्ता मोडमा सुरु गर्नुहोस् (GRUB मेनुमा recovery mode छान्नुहोस्)
  2. निम्न कमान्डले पासवर्ड रिसेट गर्नुहोस्
passwd प्रयोगकर्ता नाम
  1. प्रणालीलाई पुन: सुरु गर्नुहोस्

6.2.2 शारीरिक पहुँच नभएको अवस्था (क्लाउड VPS आदि)

  • VPS को कन्सोल सुविधा प्रयोग गरेर रिमोट जडान गर्नुहोस्
  • SSH को सार्वजनिक कुञ्जी प्रमाणीकरण प्रयोग गर्नुहोस्

6.3 Windows मा SSH प्रयोग गर्ने विधि के हो?

6.3.1 PowerShell प्रयोग गर्ने

Windows 10 वा त्यसपछिका संस्करणहरूमा, PowerShell मा SSH क्लाइन्ट मानक रूपमा उपलब्ध छ। निम्न कमान्डले जडान गर्न सकिन्छ।
ssh प्रयोगकर्ता नाम@सर्वरको IP ठेगाना

6.3.2 PuTTY प्रयोग गर्ने

  1. PuTTY लाई डाउनलोड र स्थापना गर्नुहोस्
  2. Host Name (or IP address) मा सर्वरको IP ठेगाना प्रविष्ट गर्नुहोस्
  3. Connection type लाई 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 SSH सेटिङ पछि गर्नुपर्ने थप सुरक्षा उपायहरू के हुन्?

6.5.1 Fail2Ban को स्थापना

SSH मा अनधिकृत पहुँच रोक्नका लागि, Fail2Ban स्थापना गर्नुहोस्।
sudo apt install fail2ban -y
सेटिङ फाइल/etc/fail2ban/jail.local लाई सम्पादन गर्नुहोस् र SSH को संरक्षणलाई सक्रिय गर्नुहोस्।
[sshd]
enabled = true
port = 22
maxretry = 3
findtime = 600
bantime = 3600
Fail2Ban लाई पुन: सुरु गरेर सेटिङ लागू गर्नुहोस्।
sudo systemctl restart fail2ban

6.5.2 SSH पोर्ट परिवर्तन

/etc/ssh/sshd_config खोल्नुहोस् र डिफल्ट22 बाट परिवर्तन गर्नुहोस्।
Port 2200
सेटिङ पछि, SSH लाई पुन: सुरु गर्नुहोस् र UFW मा नयाँ पोर्टलाई अनुमति दिनुहोस्।
sudo ufw allow 2200/tcp

6.6 Ubuntu मा SSH को लगहरू रीयलटाइममा कसरी जाँच्ने?

SSH को लगहरूलाई रीयलटाइममा निगरानी गर्नका लागि, निम्न कमान्ड कार्यान्वयन गर्नुहोस्।
sudo journalctl -u ssh -f
विगतका SSH लगहरू जाँच्नका लागि, निम्न कमान्ड प्रयोग गर्नुहोस्।
sudo cat /var/log/auth.log | grep ssh

6.7 SSH लाई थप सुविधाजनक रूपमा प्रयोग गर्ने कसरी?

6.7.1 .ssh/config मार्फत सजिलो लगइन

बारम्बार SSH जडान गर्दा, सेटिङलाई~/.ssh/config मा बचत गर्दा, सजिलै लगइन गर्न सकिन्छ।
Host myserver
    HostName 192.168.1.100
    User user
    Port 2200
    IdentityFile ~/.ssh/id_rsa
यो सेटिङ पछि, निम्न कमान्डले मात्र SSH जडान सम्भव हुन्छ।
ssh myserver

6.7.2 ssh-agent को प्रयोग

गोप्य कुञ्जीको पासफ्रेज छोड्नका लागि, ssh-agent प्रयोग गर्नुहोस्।
eval $(ssh-agent -s)
ssh-add ~/.ssh/id_rsa

सारांश

यो खण्डमा, SSH का सामान्य प्रश्नहरू र तिनका समाधानहरू प्रस्तुत गरियो।
  • SSH को टाइमआउट उपायहरू
  • पासवर्ड बिर्सेमा रिकभरी विधि
  • विन्डोज तथा WSL मा SSH को प्रयोग
  • थप सुरक्षा उपायहरू
  • SSH लग जाँच्ने विधि
  • अझ सुविधाजनक प्रयोगका लागि .ssh/config को उपयोग
यो लेखको सामग्रीलाई उपयोग गरेर, तपाईं सुरक्षित र आरामदायी SSH वातावरण निर्माण गर्न सक्नुहुन्छ र रिमोट सर्भर व्यवस्थापन सहज रूपमा गर्न सक्नुहुन्छ।

सम्बन्धित लेखहरू

सम्बन्धित

1. परिचय Ubuntu मा SSH प्रयोग गरेर, रिमोटबाट सर्वर वा PC मा सुरक्षित रूपमा पहुँच गर्न र सञ्चालन गर्न सकिन्छ। यो लेखमा, […]

年収訴求