दोनों sftp-server
और internal-sftp
OpenSSH का हिस्सा हैं। sftp-server
एक स्टैंडअलोन बाइनरी है। internal-sftp
केवल एक कॉन्फ़िगरेशन कीवर्ड है जो किसी अन्य प्रक्रिया (आमतौर पर ) को चलाने के बजाय, sshd
SFTP सर्वर कोड का उपयोग करने के लिए कहता है ।sshd
sftp-server
कार्यात्मक दृष्टिकोण से, sftp-server
और internal-sftp
लगभग समान हैं। वे एक ही स्रोत कोड से निर्मित होते हैं।
इसका मुख्य लाभ internal-sftp
यह है कि ChrootDirectory
निर्देश के साथ उपयोग किए जाने पर इसे समर्थन फ़ाइलों की आवश्यकता नहीं होती है ।
sshd_config(5)
आदमी पृष्ठ से उद्धरण :
के लिए Subsystem
निर्देश :
आदेश sftp-server
SFTP फ़ाइल स्थानांतरण सबसिस्टम लागू करता है।
वैकल्पिक रूप से नाम 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
उसी को प्राप्त करना चाहिए