मैं लिनक्स पर ओपनएसएसएच एसएफटीपी सर्वर कैसे सेट कर सकता हूं?


10

मैं एक निर्देशिका को साझा करने के लिए sftp-server को कॉन्फ़िगर करना चाहता हूं, लेकिन मुझे नहीं पता कि कैसे संशोधित किया जाए /etc/ssh/sshd_config

मेरी आवश्यकताएं हैं:

1) लॉगिन प्रमाणपत्र का उपयोग नहीं करेगा, केवल पासवर्ड (अर्थात प्राधिकरण पासवर्ड पद्धति का उपयोग करता है)

2) मैं उपयोगकर्ता के साथ लॉगिन करना चाहता हूं: ftp, पासवर्ड: foo और शेयर निर्देशिका / होम / ftp।

3) मेरे पास एक एप्लिकेशन है जो समय-समय पर सर्वर से एक फ़ाइल डाउनलोड करने की आवश्यकता है, मुझे पूर्ण ऑपरेटिंग क्लाइंट के साथ लॉगिन करने की आवश्यकता नहीं है।

अब तक मैंने निम्नलिखित पंक्तियों को / etc / ssh / sshd_config में जोड़ा:

Protocol 2
Subsystem sftp /usr/libexec/sftp-server
Match User ftp
   ForceCommand internal-sftp
   ChrootDirectory /home/ftp

बाकी सब कुछ टिप्पणी है।

/home/ftp वर्तमान समय में एक खाली निर्देशिका है।

यदि मैं रूट क्रेडेंशियल का उपयोग करके किसी फ़ाइल को डाउनलोड करने का प्रयास करता हूं, तो एक्सेस काम करता है लेकिन अगर मैं ftp क्रेडेंशियल का उपयोग करता हूं तो यह काम नहीं करता है। क्या मुझे लॉगिन शेल सेट करने की आवश्यकता है? क्या मुझे किसी तरह / घर / ftp को आबाद करने की आवश्यकता है?

संपादित करें: यह मेरा sshd लॉग है:

subsystem request for sftp
debug1: subsystem: exec() internal-sftp
debug1: Forced command (config) 'internal-sftp '
debug2: fd 3 setting TCP_NODELAY
debug2: fd 9 setting O_NONBLOCK
debug2: fd 8 setting O_NONBLOCK
debug1: Received SIGCHLD.
debug1: session_by_pid: pid 17613
debug1: session_exit_message: session 0 channel 0 pid 17613
debug2: channel 0: request exit-status confirm 0
debug1: session_exit_message: release channel 0
debug2: channel 0: write failed
debug2: channel 0: close_write
debug2: channel 0: send eow
debug2: channel 0: output open -> closed
debug2: channel 0: read<=0 rfd 9 len 0
debug2: channel 0: read failed
debug2: channel 0: close_read
debug2: channel 0: input open -> drain
debug2: channel 0: ibuf empty
debug2: channel 0: send eof
debug2: channel 0: input drain -> closed
debug2: channel 0: send close
debug2: notify_done: reading
debug3: channel 0: will not send data after close
debug3: channel 0: will not send data after close
User child is on pid 17611
debug3: mm_request_receive entering

* ग्राहक यहां लटका रहता है (जब तक कोई समय समाप्त होता है) *

कृपया ध्यान दें, फिर से, अगर मैं "रूट" के रूप में लॉगिन करता हूं तो फ़ाइल सही तरीके से डाउनलोड होती है। यदि मैं कॉन्फ़िगरेशन फ़ाइल की अंतिम तीन पंक्तियों (अर्थात Matchपंक्ति और निम्नलिखित 2) पर टिप्पणी करता हूं तो यह सही ढंग से डाउनलोड होती है ।


क्या आपने मैच के विकल्पों में से केवल एक को निर्दिष्ट करने की कोशिश की है ? जब आप वास्तविक SFTP क्लाइंट का उपयोग करते हैं तो क्या होता है? क्या आप अभी भी sshविंडोज पर एक सामान्य SSH क्लाइंट, जैसे , या PuTTY का उपयोग करके कनेक्ट कर सकते हैं ? OpenSSH के किस संस्करण का आप उपयोग कर रहे हैं?
डैनियल बेक

जवाबों:


7

आपको यह सुनिश्चित करने की आवश्यकता है कि उस समूह के /home/ftpस्वामित्व में है rootऔर अन्य के पास अनुमतियाँ नहीं हैं, जैसे chmod 0755। आपको ftpफ़ाइलों को जोड़ने के लिए उप-निर्देशिकाओं को जोड़ने की आवश्यकता है ।


आपको internal-sftpसबसिस्टम की भी आवश्यकता है , अन्यथा आपको एक उचित chrootवातावरण प्रदान करने की आवश्यकता है /home/ftp:

Subsystem sftp internal-sftp

लॉगिन के सभी गैर-पासवर्ड प्रकारों को अस्वीकार करने के लिए, दर्ज करें

ChallengeResponseAuthentication no
GSSAPIAuthentication no
PubkeyAuthentication no

ये डिफ़ॉल्ट रूप से सक्रिय होते हैं।


मेरी सबसिस्टम लाइन को आपके साथ बदलना (और निर्देशिका अनुमति सेट करना) मेरी त्रुटि स्ट्रिंग को गायब कर देता है, हालांकि मेरे क्लाइंट प्रोग्राम "हैंग" करते हैं और मुझे जिस फ़ाइल की आवश्यकता है उसे डाउनलोड नहीं करते हैं (मैं रूट क्रेडेंशियल्स का उपयोग करके इसे डाउनलोड कर सकता हूं)। क्या sshd आउटपुट को अधिक वर्बोज़ बनाने का कोई तरीका है?
एमिलियानो 16

बदले में केवल एक कॉन्फ़िगरेशन आइटम जोड़ने का प्रयास करें और परीक्षण करें कि क्या आप यह निर्धारित करने के लिए कनेक्ट कर सकते हैं कि कौन सा विकल्प गलती पर है, या क्या यह शायद विकल्पों का संयोजन है। आपके पास कुछ आउटपुट होना चाहिए /var/log/secure, कम से कम मैं इसे अपने सिस्टम पर प्राप्त कर सकता हूं।
डैनियल बेक

मैंने LogLevel निर्देश का उपयोग करके अपना लॉगिन स्तर बढ़ाया है। में स्ट्रिंग पढ़ सकता हूँ /var/log/messages। मेरे पास निम्नलिखित हैं: Failed none for ftp [...]इसके बाद Accepted password for ftp [...]और User child is on pid 7658। क्लाइंट हैंग करता है और फिर कई बार बाहर निकलता है
एमिलियानो

@happy_emi उस जानकारी को अपने प्रश्न में जोड़ने पर विचार करें।
डैनियल बेक

ऐसा लगता है कि यह निर्देशिका अनुमतियों की समस्या थी। sshd_configअभी ठीक था।
एमिलियानो 10
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.