ग्राहकों और सर्वरों पर सार्वजनिक कुंजी प्रमाणीकरण के साथ एसएफटीपी सेट करें और सत्यापित करें
पर्यावरण
- विंडोज़
-
- विंडोज 10 प्रो
- विंडोज सर्वर 2019
- विंडोज 7
- विंडोज सर्वर 2012 R2
- ओपनेश
-
- 7.7p1
- 8.1p1 - बीटा
※ यह अन्य संस्करणों में काम करता है, लेकिन यह अपुष्ट है
पहले
पिछली बार, आप यह सत्यापित करने के लिए एक एसएफटीपी सर्वर सेट करते हैं कि पासवर्ड प्रमाणीकरण आपको फ़ाइलें भेजने और प्राप्त करने की अनुमति देता है। इस बार, sftp सार्वजनिक कुंजी प्रमाणीकरण का उपयोग कर फ़ाइलों को भेजता है और प्राप्त करता है।
पहले से तैयारी
- ग्राहक के पास एक ओपनएसएच क्लाइंट स्थापित है
- सर्वर में एक ओपनएसएच सर्वर स्थापित है।
- सर्वर ओपनएसएच सेवा शुरू करता है और बंदरगाह 22 को मुक्त कर दिया जाता है।
ग्राहक में निजी और सार्वजनिक चाबियां बनाएं
क्लाइंट में लॉग इन करें। सर्वर की ओर से प्राइवेट और पब्लिक चाबियां भी बनाई जा सकती हैं, लेकिन प्राइवेट चाबी क्लाइंट की होगी और पब्लिक चाबी सर्वर से होगी। क्लाइंट साइड पर बनाएं।
प्रशासक अधिकारों के साथ पावरशेल शुरू करें।
एक फ़ाइल बनाएं, सीडी कमांड के साथ किसी भी फ़ोल्डर पर जाएं, और निम्नलिखित कमांड टाइप करें:
ssh-keygen -t rsa -f id_rsa
आप कुंजी में एक पासवाधे (पासवर्ड) डाल सकते हैं, इसलिए यदि आवश्यक हो तो इसे रखें।
यदि कुंजी सफलतापूर्वक उत्पन्न होती है, तो फ़ोल्डर में सार्वजनिक और निजी चाबियां इस प्रकार बनाई जाती हैं: "id_rsa" निजी कुंजी है और "id_rsa.pub" सार्वजनिक कुंजी है ।
सर्वर पर एक सार्वजनिक कुंजी रखें
सर्वर के लिए अपने SFTP खाते के साथ विंडोज में लॉग इन करें।
कृपया सर्वर पर निम्नलिखित फ़ोल्डर में बनाई गई सार्वजनिक कुंजी "id_rsa.pub" रखें। 「. यदि आपके पास "एसएसएच" फ़ोल्डर नहीं है, तो कृपया एक बनाएं। इसके अलावा, फ़ाइल का नाम "authorized_keys" में बदलें। (<> को उस उपयोगकर्ता नाम से बदलें जिसे आप SFTP के साथ लॉग इन करते हैं।
- C:\ उपयोगकर्ता < उपयोगकर्ता नाम> \ ssh
ध्यान दें कि केवल "प्रशासक" या SFTP उपयोगकर्ताओं वाले उपयोगकर्ताओं के पास इस फ़ाइल तक पहुंच होनी चाहिए। यदि अन्य उपयोगकर्ताओं के पास एक्सेस है तो एसएफटीपी कनेक्शन हमेशा विफल हो जाते हैं। उदाहरण के लिए, एनजी उपयोगकर्ताओं का एक समूह है या हर कोई अनुमति के लिए संलग्न है ।
इस उदाहरण में, "। "एसएसएच" फ़ोल्डर के एक्सेस अधिकार "समूह: सिस्टम", "समूह: प्रशासक" और "उपयोगकर्ता: sftptest" हैं। यदि आप अनुमति नहीं निकाल सकते हैं, तो अनुमति विरासत को अक्षम करें।
सर्वर पर सार्वजनिक कुंजी प्रमाणीकरण सक्षम करें
प्रशासकों के साथ सर्वर पर लॉग इन करें उपयोगकर्ताओं की अनुमति देता है, और फिर निम्नलिखित फ़ोल्डर्स खोलें:
- C:\ ProgramData \ ssh
चूंकि "sshd_config" नामक एक फ़ाइल है, इसलिए इसे कॉपी करें और फ़ाइल का नाम "sshd_config_default" में बदलें और एक बैकअप सेट करें।
प्रशासक विशेषाधिकारों के साथ शुरू किए गए पाठ संपादक में "sshd_config" खोलें।
सार्वजनिक कुंजी प्रमाणीकरण को सक्षम करने के लिए, इसे इस प्रकार बदलें:
#PubkeyAuthentication yes
↓↓↓
PubkeyAuthentication yes
इसके अलावा, पासवर्ड प्रमाणीकरण डिफ़ॉल्ट रूप से सक्षम है, इसलिए यदि आप इसे अक्षम करना चाहते हैं, तो इसे इस प्रकार बदलें।
#PasswordAuthentication yes
↓↓↓
PasswordAuthentication no
मैं प्रत्येक SFTP खाते के लिए एक सार्वजनिक कुंजी रखना चाहता हूं, इसलिए मैं निम्नलिखित पंक्ति पर टिप्पणी करूंगा:
Match Group administrators
AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
↓↓↓
#Match Group administrators
# AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
यदि आप प्रत्येक SFTP खाते के लिए रूट निर्देशिका निर्दिष्ट करना चाहते हैं, तो निम्नलिखित पंक्ति जोड़ें: इस बात के आधार पर कि आप इसे निर्दिष्ट करते हैं या नहीं, जब आप ग्राहक से फ़ोल्डर पथ निर्दिष्ट करते हैं, तो यह "सी:\xxxxx" या "/xxxxx" प्रारूप में बदल सकता है।
Match User <ユーザー名>
ChrootDirectory <フォルダパス>
उदाहरण
Match User TestUser
ChrootDirectory C:\Users\TestUser
sshd_config सेव करने के बाद, ओपनएसएच सर्वर को पुनः आरंभ करें।
सार्वजनिक कुंजी प्रमाणीकरण के साथ ग्राहकों से फ़ाइलें भेजें और प्राप्त करें
एक फ़ोल्डर में एसएफटीपी के साथ कनेक्ट करने से पहले बनाई गई निजी कुंजी "id_rsa" रखें जो केवल उस उपयोगकर्ता के लिए सुलभ है जो SFTP चला रहा है। ध्यान दें कि यदि फ़ोल्डर में रखा जाता है तो एफटीपी कनेक्शन विफल हो जाएंगे जिसे अन्य उपयोगकर्ताओं द्वारा एक्सेस किया जा सकता है। विशेष रूप से यदि फ़ोल्डर में उपयोगकर्ताओं और सभी समूहों के लिए अनुमतियां हैं, तो यह एनजी है।
असल में, यह सिफारिश की जाती है क्योंकि यदि आप इसे निम्नलिखित फ़ोल्डर में डालते हैं तो यह स्वचालित रूप से पथ का उल्लेख करेगा।
- C:\ उपयोगकर्ता < उपयोगकर्ता नाम> \ ssh
ग्राहक है "। "एसएसएच" फ़ोल्डर के एक्सेस अधिकार "समूह: सिस्टम", "समूह: प्रशासक", "उपयोगकर्ता: < लॉगिन उपयोगकर्ता >" हैं।
यदि आप निजी कुंजी का उपयोग करके sftp का उपयोग करना चाहते हैं, तो आदेश को इस प्रकार टाइप करें (<> को बदलें): यदि आपने एक पासवाज़ सेट किया है, तो पासवाज़ भी दर्ज करें।
sftp -i id_rsa <ユーザー名>@<サーバー名>
यदि आप सफलतापूर्वक लॉग इन करते हैं, तो आपको लॉग-इन उपयोगकर्ता के प्रदर्शन में बंद कर दिया जाएगा।
आप यह भी देख सकते हैं कि आप डीआईआर कमांड के साथ लॉग इन कर सकते हैं।
अब जब आपने "test3.txt" नामक एक फाइल तैयार की है, तो फाइल को पुट कमांड के साथ भेजें।
put c:\temp\test3.txt
यदि आप सर्वर-साइड सी को देखते हैं: \ उपयोगकर्ताओं के sftptest फ़ोल्डर, आप देख सकते है कि test3.txt फ़ाइल भेजा जा रहा है ।
ग्राहक से प्राप्त करने की कोशिश करें।
get test3.txt c:\temp\test4.txt
मैं इस बात की पुष्टि करने में सक्षम था कि फाइल प्राप्त करने में सक्षम था।
सारांश
आप सार्वजनिक कुंजी प्रमाणीकरण का उपयोग करके SFTP द्वारा फ़ाइलें भेजने और प्राप्त करने में सक्षम थे। पब्लिक चाबी का इस्तेमाल करने से सर्वर साइड से पासवर्ड पता नहीं चल पाएगा। यह आपको पासवर्ड प्रमाणीकरण की तुलना में अधिक सुरक्षित रूप से फ़ाइलों का आदान-प्रदान करने की अनुमति देता है।