दोनों sftp-serverऔर internal-sftpOpenSSH का हिस्सा हैं। sftp-serverएक स्टैंडअलोन बाइनरी है। internal-sftpकेवल एक कॉन्फ़िगरेशन कीवर्ड है जो किसी अन्य प्रक्रिया (आमतौर पर ) को चलाने के बजाय, sshdSFTP सर्वर कोड का उपयोग करने के लिए कहता है ।sshdsftp-server
कार्यात्मक दृष्टिकोण से, sftp-serverऔर internal-sftpलगभग समान हैं। वे एक ही स्रोत कोड से निर्मित होते हैं।
इसका मुख्य लाभ internal-sftpयह है कि ChrootDirectoryनिर्देश के साथ उपयोग किए जाने पर इसे समर्थन फ़ाइलों की आवश्यकता नहीं होती है ।
sshd_config(5)आदमी पृष्ठ से उद्धरण :
के लिए Subsystemनिर्देश :
आदेश sftp-serverSFTP फ़ाइल स्थानांतरण सबसिस्टम लागू करता है।
वैकल्पिक रूप से नाम internal-sftpएक इन-प्रोसेस SFTP सर्वर को लागू करता है। यह ChrootDirectoryक्लाइंट पर एक अलग फाइल सिस्टम रूट को मजबूर करने के लिए कॉन्फ़िगरेशन को सरल बना सकता है।
के लिए ForceCommandनिर्देश :
एक आदेश निर्दिष्ट करना एक internal-sftpइन-प्रोसेस SFTP सर्वर के उपयोग को मजबूर करता है जिसके लिए उपयोग किए जाने पर कोई समर्थन फ़ाइलों की आवश्यकता नहीं होती है ChrootDirectory।
के लिए ChrootDirectoryनिर्देश :
ChrootDirectoryउपयोगकर्ता के सत्र का समर्थन आवश्यक फ़ाइलों और निर्देशिकाओं शामिल होना चाहिए। एक इंटरैक्टिव सत्र के लिए यह कम से कम एक खोल, आम तौर पर की आवश्यकता है sh, और बुनियादी /devजैसे नोड्स null, zero, stdin, stdout, stderr, और ttyउपकरणों। SFTP का उपयोग करके फ़ाइल स्थानांतरण सत्रों के लिए पर्यावरण का कोई अतिरिक्त विन्यास आवश्यक नहीं है यदि इन-प्रोसेस sftp-server का उपयोग किया जाता है, हालांकि सत्र जो लॉगिंग का उपयोग करते हैं उन्हें /dev/logकुछ ऑपरेटिंग सिस्टम ( sftp-serverविवरण के लिए देखें) पर chroot निर्देशिका के अंदर की आवश्यकता हो सकती है ।
internal-sftpप्रदर्शन का एक और लाभ है, क्योंकि इसके लिए एक नई उप-प्रक्रिया को चलाने के लिए आवश्यक नहीं है।
internal-sftpस्टैंडअलोन से (2008 में OpenSSH 4.9p1?) बहुत बाद में जोड़ा गया था sftp-serverबाइनरी है, लेकिन यह अब तक डिफ़ॉल्ट है।
मेरा मानना है कि sftp-serverनए प्रतिष्ठानों के लिए उपयोग करने का कोई कारण नहीं है ।
ऐसा लग सकता है कि sshdयह स्वचालित रूप से उपयोग कर सकता है internal-sftp, जब इसका सामना होता है sftp-server, क्योंकि कार्यक्षमता समान है और internal-sftpयहां तक कि उपरोक्त फायदे भी हैं। लेकिन किनारे के मामले हैं, जहां मतभेद हैं।
कुछ उदाहरण:
व्यवस्थापक कुछ उपयोगकर्ताओं को लॉग इन करने से रोकने के लिए एक लॉगिन शेल कॉन्फ़िगरेशन पर भरोसा कर सकता है। internal-sftpबाइपास पर स्विच करना , क्योंकि लॉगिन शेल अब शामिल नहीं है।
sftp-serverबाइनरी का उपयोग करना (एक स्टैंडअलोन प्रक्रिया होने के नाते) आप कुछ हैक का उपयोग कर सकते हैं, जैसे कि एसएफटीपी के तहत चल रहा हैsudo ।
SSH-1 के लिए (यदि कोई अभी भी इसका उपयोग कर रहा है), Subsystemनिर्देश बिल्कुल भी शामिल नहीं है। SSH-1 का उपयोग करने वाला एक SFTP सर्वर स्पष्ट रूप से सर्वर को बताता है कि सर्वर को क्या बाइनरी चलना चाहिए। तो विरासत SSH-1 SFTP ग्राहकों का sftp-serverनाम हार्ड-कोडित है।
ForceCommand internal-sftpउसी को प्राप्त करना चाहिए