उबंटू SSH संपूर्ण व्यावहारिक गाइड - कनेक्शन से लेकर पोर्ट फ़ॉरवर्डिंग और सुरक्षा कॉन्फ़िगरेशन तक सब कुछ एक ही बार में

अवलोकन

SSH (Secure Shell) रिमोट लिनक्स सर्वर प्रबंधन के लिए एक आवश्यक मानक नेटवर्क प्रोटोकॉल है। इस लेख में, हम उबंटू परिवेश में OpenSSH सर्वर सेटअप करने से लेकर पासवर्ड-रहित सार्वजनिक कुंजी प्रमाणीकरण, व्यावहारिक नेटवर्क कनेक्टिविटी के लिए SSH पोर्ट फ़ॉरवर्डिंग और आवश्यक सुरक्षा संवर्धन युक्तियों तक चरण-दर-चरण जानेंगे।

1. OpenSSH सर्वर इंस्टॉलेशन और सेवा सक्रियण

उबंटू सिस्टम पर रिमोट एक्सेस सेवा प्रदान करने के लिए, नवीनतम पैकेज सूची को अपडेट करें और openssh-server पैकेज इंस्टॉल करें।

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

इंस्टॉल की गई SSH सेवा को बूट होने पर स्वचालित रूप से शुरू करने के लिए सक्षम करने और तुरंत चलाने हेतु systemctl enable --now ssh कमांड निष्पादित करें।

sudo systemctl enable –now ssh

जाँचें कि क्या SSH सर्विस डेमॉन (sshd) वर्तमान में सक्रिय स्थिति (active (running)) में सामान्य रूप से चल रहा है।

sudo systemctl status ssh –no-pager

यह पुष्टि करने के लिए कि SSH डिफ़ॉल्ट पोर्ट 22 पर लिसनिंग (LISTEN) स्थिति में नेटवर्क कनेक्शन की प्रतीक्षा कर रहा है या नहीं, ss -tulpn | grep :22 कमांड चलाएँ।

ss -tulpn | grep :22

2. पासवर्ड-रहित एक्सेस के लिए SSH कुंजी युग्म (Key Pair) बनाना और पंजीकृत करना

SSH कुंजी फ़ाइलों को सुरक्षित रूप से संग्रहीत करने के लिए ~/.ssh निर्देशिका बनाएँ और अनुमतियाँ 700 पर सेट करें ताकि केवल स्वामी ही इसे एक्सेस कर सके।

mkdir -p ~/.ssh && chmod 700 ~/.ssh

उत्कृष्ट सुरक्षा और प्रदर्शन वाले Ed25519 एल्गोरिदम पर आधारित नया कुंजी युग्म (यदि मौजूद नहीं है) जनरेट करने के लिए test -f ~/.ssh/id_ed25519 || ssh-keygen -t ed25519 -N '' -f ~/.ssh/id_ed25519 कमांड चलाएँ।
कमांड निष्पादन के परिणाम से आप देख सकते हैं कि निजी कुंजी (id_ed25519) और सार्वजनिक कुंजी (id_ed25519.pub) सफलतापूर्वक बन गई हैं।

test -f ~/.ssh/id_ed25519 || ssh-keygen -t ed25519 -N ’’ -f ~/.ssh/id_ed25519

जनरेट की गई सार्वजनिक कुंजी की सामग्री को प्रमाणीकरण अनुमति सूची फ़ाइल ~/.ssh/authorized_keys में जोड़ें।

cat ~/.ssh/id_ed25519.pub » ~/.ssh/authorized_keys

प्रमाणीकरण कुंजी सूची फ़ाइल की सुरक्षा बनाए रखने और SSH डेमॉन के सख्त अनुमति परीक्षण को पास करने के लिए authorized_keys फ़ाइल अनुमतियों को 600 तक सीमित करें।

chmod 600 ~/.ssh/authorized_keys

जनरेट की गई Ed25519 निजी कुंजी निर्दिष्ट करके स्थानीय लूपबैक (127.0.0.1) पते पर कनेक्ट करने का प्रयास करें और सत्यापित करें कि कुंजी-आधारित प्रमाणीकरण ठीक से काम कर रहा है या नहीं।
कमांड निष्पादन के बाद, बिना पासवर्ड दर्ज किए स्थानीय कुंजी प्रमाणीकरण कनेक्शन सफल होने का संदेश प्रदर्शित होता है।

ssh -i ~/.ssh/id_ed25519 -o StrictHostKeyChecking=no $(whoami)@127.0.0.1 ’echo SSH 로컬 키 인증 접속 성공!’

3. व्यावहारिक नेटवर्क टनलिंग: SSH पोर्ट फ़ॉरवर्डिंग अभ्यास

वेब सर्वर चलाने और HTTP अनुरोधों का परीक्षण करने के लिए, नवीनतम पैकेज सूची को अपडेट करें और curl तथा python3 पैकेज इंस्टॉल करें।

sudo apt-get update -qq && sudo apt-get install -y curl python3

पोर्ट फ़ॉरवर्डिंग परीक्षण में उपयोग की जाने वाली वेब दस्तावेज़ निर्देशिका बनाने और एक परीक्षण HTML फ़ाइल लिखने के लिए mkdir -p /tmp/webroot && echo '<h1>SSH Tunnel Test OK</h1>' > /tmp/webroot/index.html कमांड चलाएँ।

mkdir -p /tmp/webroot && echo ‘SSH Tunnel Test OK’ > /tmp/webroot/index.html

आंतरिक सेवा के रूप में कार्य करने वाले एक साधारण वेब सर्वर को पोर्ट 8080 पर बैकग्राउंड में चलाने के लिए python3 -m http.server 8080 --directory /tmp/webroot >/dev/null 2>&1 & कमांड निष्पादित करें।

python3 -m http.server 8080 –directory /tmp/webroot >/dev/null 2>&1 &

स्थानीय पोर्ट फ़ॉरवर्डिंग को बैकग्राउंड में चलाएँ ताकि स्थानीय पोर्ट 9090 पर आने वाले अनुरोध SSH सुरक्षित टनल के माध्यम से लक्षित सर्वर के पोर्ट 8080 पर अग्रेषित हो सकें।
कमांड चलाने के बाद, टर्मिनल सत्र पर कब्ज़ा किए बिना बैकग्राउंड में सुरक्षित रूप से एक पोर्ट फ़ॉरवर्डिंग टनल बन जाती है।

ssh -f -N -L 9090:localhost:8080 -o StrictHostKeyChecking=no $(whoami)@127.0.0.1

SSH टनल द्वारा फ़ॉरवर्ड किए गए स्थानीय पोर्ट 9090 पर एक HTTP अनुरोध भेजें ताकि यह सत्यापित किया जा सके कि आंतरिक वेब सर्वर से कनेक्शन सही ढंग से रिले हो रहा है या नहीं।
कमांड निष्पादन परिणाम आंतरिक 8080 वेब सर्वर से प्रतिक्रिया सामग्री <h1>SSH Tunnel Test OK</h1> प्रदर्शित करता है, जिससे पुष्टि होती है कि पोर्ट फ़ॉरवर्डिंग पूरी तरह से काम कर रही है।

curl -s http://localhost:9090

पोर्ट फ़ॉरवर्डिंग परीक्षण पूरा होने के बाद, बैकग्राउंड में चल रही परीक्षण वेब सर्वर प्रक्रिया को सुरक्षित रूप से समाप्त करने के लिए pkill -f 'http.server 8080' कमांड चलाएँ।

pkill -f ‘http.server 8080’

4. व्यावहारिक SSH सर्वर सुरक्षा संवर्धन कॉन्फ़िगरेशन (sshd_config)

कॉन्फ़िगरेशन परिवर्तन के दौरान उत्पन्न होने वाली किसी भी अप्रत्याशित समस्या से निपटने और मूल सेटिंग्स को सुरक्षित रखने के लिए, sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak कमांड का उपयोग करके कॉन्फ़िगरेशन फ़ाइल का बैकअप लें।

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

सुरक्षा को सुदृढ़ करने के लिए, रूट खाते के प्रत्यक्ष रिमोट लॉगिन को पूरी तरह से अवरुद्ध करने हेतु sudo sed -i 's/^#*PermitRootLogin.*/PermitRootLogin no/' /etc/ssh/sshd_config कमांड चलाकर कॉन्फ़िगरेशन मान बदलें।

sudo sed -i ’s/^#PermitRootLogin./PermitRootLogin no/’ /etc/ssh/sshd_config

संशोधित SSH सर्वर कॉन्फ़िगरेशन फ़ाइल में सिंटैक्स त्रुटियों या टाइपो की पहले से सुरक्षित रूप से पुष्टि करने के लिए sudo sshd -t कमांड चलाएँ।
कमांड चलाने के बाद कोई त्रुटि संदेश प्रदर्शित नहीं होता है, जिससे पुष्टि होती है कि कॉन्फ़िगरेशन सिंटैक्स में कोई समस्या नहीं है।

sudo sshd -t

यह पुष्टि करने के लिए कि रूट लॉगिन ब्लॉक विकल्प (PermitRootLogin no) कॉन्फ़िगरेशन फ़ाइल में सही ढंग से लागू हुआ है, grep -E '^(PermitRootLogin|PasswordAuthentication)' /etc/ssh/sshd_config || echo '설정 검증 완료' कमांड चलाएँ।
कमांड निष्पादन परिणाम सामान्य रूप से PermitRootLogin no पाता है, जिससे पुष्टि होती है कि सुरक्षा कॉन्फ़िगरेशन पूरी तरह से लागू हो गया है।

grep -E ‘^(PermitRootLogin|PasswordAuthentication)’ /etc/ssh/sshd_config || echo ‘설정 검증 완료’

अब तक, हमने उबंटू परिवेश में बुनियादी SSH कनेक्शन से लेकर पोर्ट फ़ॉरवर्डिंग और आवश्यक सुरक्षा सेटिंग्स तक व्यावहारिक कार्य के लिए आवश्यक मुख्य बिंदुओं को देखा है।
अधिक सुरक्षित और कुशल सर्वर प्रबंधन परिवेश बनाने के लिए बताए गए सुरक्षा नियमों को चरण-दर-चरण लागू करें।