इस लेख में हम दूरस्थ सर्वरों/कंप्यूटरों को सुरक्षित रूप से एक्सेस करने के लिए विंडोज़ पर आरएसए कुंजियों के साथ एसएसएच प्रमाणीकरण को कॉन्फ़िगर करेंगे। हम दिखाएंगे कि विंडोज़ पर आरएसए कुंजी (प्रमाणपत्र) कैसे उत्पन्न करें और कुंजी-आधारित प्रमाणीकरण के लिए विंडोज 10/विंडोज सर्वर 2019 पर एक अंतर्निहित ओपनएसएसएच सर्वर को कॉन्फ़िगर करें (पासवर्ड के बिना दूरस्थ होस्ट पर प्रमाणित करने की अनुमति देता है)।
SSH कुंजी-आधारित प्रमाणीकरण लिनक्स की दुनिया में व्यापक रूप से उपयोग किया जाता है, लेकिन विंडोज में यह हाल ही में सामने आया है। विचार यह है कि क्लाइंट की सार्वजनिक कुंजी SSH सर्वर पर जोड़ी जाती है, और जब कोई क्लाइंट इससे कनेक्ट करने का प्रयास करता है, तो सर्वर यह जांचता है कि क्लाइंट के पास संबंधित निजी कुंजी है या नहीं।
सामग्री:
- Windows पर SSH (RSA) जेनरेट करना
- SSH कुंजियों का उपयोग करके प्रमाणित करने के लिए विंडोज़ पर OpenSSH सर्वर को कॉन्फ़िगर करना
- स्थानीय व्यवस्थापक के अंतर्गत SSH कुंजी का उपयोग करके Windows लॉगिन कैसे करें?
Windows पर SSH (RSA) जेनरेट करना
आपको क्लाइंट कंप्यूटर पर दो RSA कुंजियाँ (सार्वजनिक और निजी वाली) जनरेट करनी होंगी जिनका उपयोग आप OpenSSH चलाने वाले दूरस्थ Windows सर्वर से कनेक्ट करने के लिए करेंगे। क्लाइंट साइड पर एक निजी कुंजी संग्रहीत की जाती है (इसे किसी को न दें!), और एक सार्वजनिक कुंजी को authorized_keys में जोड़ दिया जाता है। SSH सर्वर पर फ़ाइल। Windows क्लाइंट पर RSA कुंजियाँ बनाने के लिए, आपको OpenSSH क्लाइंट स्थापित करना होगा।
विंडोज 10 1809 (और नए) और विंडोज सर्वर 2019 में, ओपनएसएसएच क्लाइंट को एक अलग फीचर के रूप में स्थापित किया गया है:
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0
एक मानक (गैर-विशेषाधिकार प्राप्त) पावरशेल सत्र चलाएं और कमांड का उपयोग करके RSA 2048 कुंजियों की एक जोड़ी बनाएं:
ssh-keygen
निजी कुंजी की सुरक्षा के लिए आपको एक पासवर्ड दर्ज करने के लिए प्रेरित किया जाएगा। यदि आप पासवर्ड निर्दिष्ट करते हैं, तो आपको हर बार एसएसएच प्रमाणीकरण के लिए इस कुंजी का उपयोग करने पर इसे दर्ज करना होगा। मैंने कोई पासफ़्रेज़ दर्ज नहीं किया है (अनुशंसित नहीं)।
Ssh-keygen .ssh . बनाएगा वर्तमान विंडोज उपयोगकर्ता (C:\Users\your_username) की प्रोफ़ाइल में निर्देशिका और उसमें 2 फ़ाइलें रखें:
- id_rsa - एक निजी कुंजी
- id_rsa.pub - एक सार्वजनिक कुंजी
RSA कुंजियाँ बनाने के बाद, आप SSH एजेंट . में निजी कुंजी जोड़ सकते हैं सेवा, जो निजी कुंजी को आसानी से प्रबंधित करने और प्रमाणीकरण के लिए उनका उपयोग करने की अनुमति देती है। SSH एजेंट निजी कुंजी संग्रहीत करता है और उन्हें वर्तमान उपयोगकर्ता के सुरक्षा संदर्भ में प्रदान करता है। ssh-agent सेवा चलाएँ और इसे PowerShell सेवा प्रबंधन आदेशों का उपयोग करके स्वचालित रूप से स्टार्टअप पर कॉन्फ़िगर करें:
set-service ssh-agent StartupType ‘Automatic’
Start-Service ssh-agent
अपनी निजी कुंजी को ssh-agent डेटाबेस में जोड़ें:
ssh-add "C:\Users\youruser\.ssh\id_rsa"
या इस प्रकार:
ssh-add.exe $ENV:UserProfile\.ssh\id_rsa
SSH कुंजियों का उपयोग करके प्रमाणित करने के लिए Windows पर OpenSSH सर्वर को कॉन्फ़िगर करना
फिर क्लाइंट पर आपके द्वारा जेनरेट की गई सार्वजनिक कुंजी को अपने एसएसएच सर्वर पर कॉपी करें (इस उदाहरण में यह एक दूरस्थ कंप्यूटर है जो विंडोज 10 1903 चला रहा है और ओपनएसएसएच कॉन्फ़िगर किया गया है)।
हमने पहले ही चर्चा की है कि विंडोज़ में ओपनएसएसएच सर्वर को और अधिक विस्तार से कैसे कॉन्फ़िगर किया जाए।id_rsa.pub को कॉपी करें .ssh . पर फ़ाइल करें उपयोगकर्ता की प्रोफ़ाइल में निर्देशिका जिसे आप SSH सर्वर से कनेक्ट करने के लिए उपयोग करेंगे। उदाहरण के लिए, मेरे पास एक व्यवस्थापक . है मेरे विंडोज 10 में उपयोगकर्ता, इसलिए मुझे कुंजी को C:\Users\admin . पर कॉपी करना होगा \.ssh\authorized_keys.
आप SCP का उपयोग करके सार्वजनिक कुंजी को SSH सर्वर पर कॉपी कर सकते हैं:
scp C:\Users\youruser\.ssh\id_rsa.pub [email protected]:c:\users\admin\.ssh\authorized_keys
अब आप बिना पासवर्ड के अपने विंडोज एसएसएच सर्वर से कनेक्ट कर सकते हैं। यदि आपने निजी कुंजी के लिए पासवर्ड (पासफ़्रेज़) सेट नहीं किया है, तो आप स्वचालित रूप से अपने दूरस्थ Windows होस्ट से कनेक्ट हो जाएंगे।
देशी SSH क्लाइंट का उपयोग करके किसी दूरस्थ होस्ट से कनेक्ट करने के लिए, आपको निम्न कमांड की आवश्यकता होगी:
ssh (username)@(SSH server name or IP address)
उदाहरण के लिए:
इसका अर्थ है कि आप व्यवस्थापक के अंतर्गत IP पते 192.168.1.15 के साथ दूरस्थ SSH सर्वर से कनेक्ट करना चाहते हैं हेतु। SSH एजेंट स्वचालित रूप से प्रमाणित करने के लिए पहले सहेजी गई निजी कुंजी का उपयोग करने का प्रयास करेगा।
यदि आप SSH कुंजियों को प्रबंधित करने के लिए ssh-agent सेवा का उपयोग नहीं करना चाहते हैं, तो आप SSH प्रमाणीकरण के लिए उपयोग की जाने वाली निजी कुंजी फ़ाइल का पथ निर्दिष्ट कर सकते हैं:
ssh [email protected] -i "C:\Users\youruser\.ssh\id_rsa"
यदि आप आरएसए कुंजी का उपयोग करके अपने एसएसएच सर्वर से कनेक्ट करने में सक्षम नहीं थे और आपको अभी भी पासवर्ड दर्ज करने के लिए कहा जाता है, तो संभव है कि आप जिस उपयोगकर्ता खाते से कनेक्ट करने का प्रयास कर रहे हैं वह स्थानीय सर्वर व्यवस्थापक समूह (समूह एसआईडी समूह) का सदस्य है। एस-1-5-32-544 है)। हम इस पर बाद में चर्चा करेंगे।
स्थानीय व्यवस्थापक के अंतर्गत SSH कुंजी का उपयोग करके Windows में लॉगिन कैसे करें?
ओपनएसएसएच विंडोज स्थानीय व्यवस्थापक विशेषाधिकार वाले उपयोगकर्ताओं के लिए विशेष कुंजी-आधारित पहुंच सेटिंग्स का उपयोग करता है।
सबसे पहले, एक कुंजी फ़ाइल C:\ProgramData\ssh\administrators_authorized_key का उपयोग करें अधिकृत_कुंजी . के बजाय s उपयोगकर्ता प्रोफ़ाइल में फ़ाइल। आपको इस टेक्स्ट फ़ाइल में अपनी SSH कुंजी जोड़नी होगी (सुरक्षा उद्देश्यों के लिए, केवल व्यवस्थापक समूह और सिस्टम के पास इस फ़ाइल को पढ़ने की अनुमति होनी चाहिए)।
उपयोगकर्ता प्रोफ़ाइल से अधिकृत_की फ़ाइल का उपयोग करने के लिए और सार्वजनिक कुंजी डेटा को admins_authorized_keys फ़ाइल में नहीं ले जाने के लिए, आप OpenSSH कॉन्फ़िगरेशन फ़ाइल (C:\ProgramData\ssh\sshd_config )।
इन पंक्तियों पर टिप्पणी करें:#Match Group administrators
# AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
sshd_config फ़ाइल में RSA कुंजियों का उपयोग करके Windows तक पहुँचने की अनुमति दें:
PubkeyAuthentication yes
और एसएसएच पासवर्ड लॉगिन अक्षम करें:
PasswordAuthentication no
Sshd_config में परिवर्तन सहेजने के बाद sshd सेवा को पुनरारंभ करना न भूलें।
restart-service sshd
यहाँ एक और महत्वपूर्ण बात है। पहले के OpenSSH संस्करणों में आपको NT Service\sshd को अधिकृत_की फ़ाइल पर पढ़ने की अनुमति देनी होती थी।
ऐसा करने के लिए, आपको निम्न में से एक करना होगा:
- OpenSSHUtils मॉड्यूल स्थापित करें :
Install-Module -Force OpenSSHUtils -Scope AllUsers
. फ़ाइल अनुमतियाँ बदलने के लिए, यह कमांड चलाएँ:Repair-AuthorizedKeyPermission -FilePath C:\Users\admin\.ssh\authorized_keys
- NTFSSecurity मॉड्यूल या icacls का उपयोग करके फ़ाइल के लिए NTFS अनुमतियों को बदलें;
- या आप सख्त मोड को अक्षम कर सकते हैं sshd_config फ़ाइल में। डिफ़ॉल्ट रूप से, यह मोड सक्षम है और कुंजी-आधारित प्रमाणीकरण को रोकता है, यदि कोई सार्वजनिक और निजी कुंजी अच्छी तरह से सुरक्षित नहीं हैं। लाइन को अनकम्मेंट करें
#StrictModes yes
, और इसेStrictModes no
. में बदलें .
तो आपने सार्वजनिक आरएसए कुंजी (प्रमाणपत्र) का उपयोग करके विंडोज़ पर एसएसएच प्रमाणीकरण को कॉन्फ़िगर किया है। अब आप इस प्रमाणीकरण विधि का उपयोग दूरस्थ सर्वर तक सुरक्षित रूप से पहुंचने, SSH सुरंग में पोर्ट को स्वचालित रूप से अग्रेषित करने, स्क्रिप्ट चलाने और स्वचालन से संबंधित अन्य कार्यों को करने के लिए कर सकते हैं।