ग्राहकों और सर्वरों पर सार्वजनिक कुंजी प्रमाणीकरण के साथ एसएफटीपी सेट करें और सत्यापित करें

पेज निर्माण की तारीख :

पर्यावरण

विंडोज़
  • विंडोज 10 प्रो
  • विंडोज सर्वर 2019
  • विंडोज 7
  • विंडोज सर्वर 2012 R2
ओपनेश
  • 7.7p1
  • 8.1p1 - बीटा

※ यह अन्य संस्करणों में काम करता है, लेकिन यह अपुष्ट है

पहले

पिछली बार, आप यह सत्यापित करने के लिए एक एसएफटीपी सर्वर सेट करते हैं कि पासवर्ड प्रमाणीकरण आपको फ़ाइलें भेजने और प्राप्त करने की अनुमति देता है। इस बार, sftp सार्वजनिक कुंजी प्रमाणीकरण का उपयोग कर फ़ाइलों को भेजता है और प्राप्त करता है।

पहले से तैयारी

  • ग्राहक के पास एक ओपनएसएच क्लाइंट स्थापित है
  • सर्वर में एक ओपनएसएच सर्वर स्थापित है।
  • सर्वर ओपनएसएच सेवा शुरू करता है और बंदरगाह 22 को मुक्त कर दिया जाता है।

ग्राहक में निजी और सार्वजनिक चाबियां बनाएं

क्लाइंट में लॉग इन करें। सर्वर की ओर से प्राइवेट और पब्लिक चाबियां भी बनाई जा सकती हैं, लेकिन प्राइवेट चाबी क्लाइंट की होगी और पब्लिक चाबी सर्वर से होगी। क्लाइंट साइड पर बनाएं।

प्रशासक अधिकारों के साथ पावरशेल शुरू करें।

image

एक फ़ाइल बनाएं, सीडी कमांड के साथ किसी भी फ़ोल्डर पर जाएं, और निम्नलिखित कमांड टाइप करें:

ssh-keygen -t rsa -f id_rsa

आप कुंजी में एक पासवाधे (पासवर्ड) डाल सकते हैं, इसलिए यदि आवश्यक हो तो इसे रखें।

image

यदि कुंजी सफलतापूर्वक उत्पन्न होती है, तो फ़ोल्डर में सार्वजनिक और निजी चाबियां इस प्रकार बनाई जाती हैं: "id_rsa" निजी कुंजी है और "id_rsa.pub" सार्वजनिक कुंजी है ।

image

image

सर्वर पर एक सार्वजनिक कुंजी रखें

सर्वर के लिए अपने SFTP खाते के साथ विंडोज में लॉग इन करें।

कृपया सर्वर पर निम्नलिखित फ़ोल्डर में बनाई गई सार्वजनिक कुंजी "id_rsa.pub" रखें। 「. यदि आपके पास "एसएसएच" फ़ोल्डर नहीं है, तो कृपया एक बनाएं। इसके अलावा, फ़ाइल का नाम "authorized_keys" में बदलें। (<> को उस उपयोगकर्ता नाम से बदलें जिसे आप SFTP के साथ लॉग इन करते हैं।

  • C:\ उपयोगकर्ता < उपयोगकर्ता नाम> \ ssh

image

ध्यान दें कि केवल "प्रशासक" या SFTP उपयोगकर्ताओं वाले उपयोगकर्ताओं के पास इस फ़ाइल तक पहुंच होनी चाहिए। यदि अन्य उपयोगकर्ताओं के पास एक्सेस है तो एसएफटीपी कनेक्शन हमेशा विफल हो जाते हैं। उदाहरण के लिए, एनजी उपयोगकर्ताओं का एक समूह है या हर कोई अनुमति के लिए संलग्न है ।

इस उदाहरण में, "। "एसएसएच" फ़ोल्डर के एक्सेस अधिकार "समूह: सिस्टम", "समूह: प्रशासक" और "उपयोगकर्ता: sftptest" हैं। यदि आप अनुमति नहीं निकाल सकते हैं, तो अनुमति विरासत को अक्षम करें।

सर्वर पर सार्वजनिक कुंजी प्रमाणीकरण सक्षम करें

प्रशासकों के साथ सर्वर पर लॉग इन करें उपयोगकर्ताओं की अनुमति देता है, और फिर निम्नलिखित फ़ोल्डर्स खोलें:

  • C:\ ProgramData \ ssh

चूंकि "sshd_config" नामक एक फ़ाइल है, इसलिए इसे कॉपी करें और फ़ाइल का नाम "sshd_config_default" में बदलें और एक बैकअप सेट करें।

image

प्रशासक विशेषाधिकारों के साथ शुरू किए गए पाठ संपादक में "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 सेव करने के बाद, ओपनएसएच सर्वर को पुनः आरंभ करें।

image

सार्वजनिक कुंजी प्रमाणीकरण के साथ ग्राहकों से फ़ाइलें भेजें और प्राप्त करें

एक फ़ोल्डर में एसएफटीपी के साथ कनेक्ट करने से पहले बनाई गई निजी कुंजी "id_rsa" रखें जो केवल उस उपयोगकर्ता के लिए सुलभ है जो SFTP चला रहा है। ध्यान दें कि यदि फ़ोल्डर में रखा जाता है तो एफटीपी कनेक्शन विफल हो जाएंगे जिसे अन्य उपयोगकर्ताओं द्वारा एक्सेस किया जा सकता है। विशेष रूप से यदि फ़ोल्डर में उपयोगकर्ताओं और सभी समूहों के लिए अनुमतियां हैं, तो यह एनजी है।

असल में, यह सिफारिश की जाती है क्योंकि यदि आप इसे निम्नलिखित फ़ोल्डर में डालते हैं तो यह स्वचालित रूप से पथ का उल्लेख करेगा।

  • C:\ उपयोगकर्ता < उपयोगकर्ता नाम> \ ssh

ग्राहक है "। "एसएसएच" फ़ोल्डर के एक्सेस अधिकार "समूह: सिस्टम", "समूह: प्रशासक", "उपयोगकर्ता: < लॉगिन उपयोगकर्ता >" हैं।

यदि आप निजी कुंजी का उपयोग करके sftp का उपयोग करना चाहते हैं, तो आदेश को इस प्रकार टाइप करें (<> को बदलें): यदि आपने एक पासवाज़ सेट किया है, तो पासवाज़ भी दर्ज करें।

sftp -i id_rsa <ユーザー名>@<サーバー名>

image

यदि आप सफलतापूर्वक लॉग इन करते हैं, तो आपको लॉग-इन उपयोगकर्ता के प्रदर्शन में बंद कर दिया जाएगा।

image

आप यह भी देख सकते हैं कि आप डीआईआर कमांड के साथ लॉग इन कर सकते हैं।

image

अब जब आपने "test3.txt" नामक एक फाइल तैयार की है, तो फाइल को पुट कमांड के साथ भेजें।

put c:\temp\test3.txt

image

यदि आप सर्वर-साइड सी को देखते हैं: \ उपयोगकर्ताओं के sftptest फ़ोल्डर, आप देख सकते है कि test3.txt फ़ाइल भेजा जा रहा है ।

image

ग्राहक से प्राप्त करने की कोशिश करें।

get test3.txt c:\temp\test4.txt

image

मैं इस बात की पुष्टि करने में सक्षम था कि फाइल प्राप्त करने में सक्षम था।

image

सारांश

आप सार्वजनिक कुंजी प्रमाणीकरण का उपयोग करके SFTP द्वारा फ़ाइलें भेजने और प्राप्त करने में सक्षम थे। पब्लिक चाबी का इस्तेमाल करने से सर्वर साइड से पासवर्ड पता नहीं चल पाएगा। यह आपको पासवर्ड प्रमाणीकरण की तुलना में अधिक सुरक्षित रूप से फ़ाइलों का आदान-प्रदान करने की अनुमति देता है।