SSH प्रोटोकॉल एक सुरक्षित सुरंग बनाता है जिसके माध्यम से आप एक द्विदिश धारा को स्थानांतरित कर सकते हैं, और आप किसी भी दो प्रक्रियाओं को जोड़ने के लिए उस स्ट्रीम का उपयोग कर सकते हैं।
सबसे परिचित दो प्रक्रिया एक शेल (सर्वर पर) और एक इंटरैक्टिव टर्मिनल एमुलेटर (क्लाइंट पर) होगी। जब आप किसी सर्वर पर ssh और रिमोट शेल के प्रॉम्प्ट पर कमांड टाइप करते हैं, तब आप इसका उपयोग कर रहे होते हैं।
SCP केवल उस शेल और रिमोट कमांड का उपयोग करके किया गया फाइल ट्रांसफर है। एससीपी में, एक बार क्लाइंट सर्वर से जुड़ा होता है, और सभी प्रमाणीकरण और प्राधिकरण हो चुके होते हैं, क्लाइंट रिमोट शेल को एक कमांड भेजता है scp -f myfile.txt
, जैसे कि फाइल के लिए myfile.txt की सामग्री को स्ट्रीम (क्लाइंट के लिए) लिखता है पढ़ने के लिए) या scp -t myfile.txt
जो स्ट्रीम से पढ़ता है और myfile.txt को लिखता है।
आप देखेंगे कि -f और -t ("से" और "से" के लिए) scp मैनपेज़ में नहीं हैं। उन्हें आंतरिक माना जाता है। एक सरल पावती योजना है, और सरल हेडर में फ़ाइल सामग्री लपेटकर निर्देशिकाओं को स्थानांतरित करने की योजना है। लेकिन अधिकांश भाग के लिए एससीपी एसएसएच सुरंग पर फ़ाइल के बाइट्स को लिखने का एक मूल मामला है, जिससे एसएसएच को संपीड़न और अखंडता जैसे जटिल सामान से निपटने की सुविधा मिलती है।
SFTP एक अधिक जटिल फ़ाइल स्थानांतरण प्रोटोकॉल है, जिसे फिर से SSH के माध्यम से ट्यून किया जाता है।
SFTP में अनुरोध और प्रतिक्रिया दोनों "SSH_FXP_OPEN", "SSH_FXP_STAT", "SSH_FXP_READ", "SSH_FXP_DATA", "SSH_FXP_CLOSE" जैसे नामों के साथ द्वि-एन्कोडेड पैकेट हैं।
प्रोटोकॉल की एक दिलचस्प विशेषता यह है कि कमांड को पाइपलाइज़ किया जा सकता है, और प्रतिक्रियाएं किसी भी क्रम में आ सकती हैं। इसका मतलब यह हो सकता है कि सत्र प्रतिक्रियाओं के इंतजार में कम समय बिताते हैं, और विभिन्न गति के डेटा-स्रोतों के साथ एक सर्वर से समवर्ती स्थानान्तरण को अनुकूलित करने के अवसर हैं - हालांकि मुझे नहीं पता कि उन अवसरों को किस हद तक ले लिया गया है।
एसएफटीपी के पास कई ऐसे काम करने की आज्ञा है जिन्हें एससीपी संबोधित नहीं करता है; जैसे डिलीट, रीनेम, ट्रंकट, मूव इत्यादि।
सभी विवरण एक IETF ड्राफ्ट में उपलब्ध हैं ।
यह ध्यान देने योग्य है कि नए SSH पैकेज scp
SFP बाइनरी के लिए सिम्प्लेक्स के साथ उपयोगकर्ता बाइनरी को प्रतिस्थापित करते हैं । इस SFTP में लुक और स्केप का अहसास है, लेकिन कवर के तहत यह SFTP प्रोटोकॉल का उपयोग कर रहा है।
प्रशस्ति पत्र - ओ'रिली एसएसएच: द सिक्योर शेल, द डेफिनिटिव गाइड , सेक्शन 5.7 "सबसिस्टम":
चेतावनी: सब-सिस्टम-sftp लाइन को sshd2_config से न निकालें: यह scp2 और sftp के काम करने के लिए आवश्यक है। आंतरिक रूप से, दोनों प्रोग्राम फ़ाइल ट्रांसफ़र करने के लिए ssh2 -s sftp चलाते हैं।
मछली इतिहास का एक दिलचस्प टुकड़ा है। मान लें कि आप SSH पर फ़ाइलें स्थानांतरित करना चाहते हैं, लेकिन आपके दूरस्थ सिस्टम में SCP नहीं है। या शायद आप एससीपी की तुलना में अधिक परिष्कृत फ़ाइल संचालन करना चाहते हैं, लेकिन आपके दूरस्थ सिस्टम में एसएफटीपी नहीं है। न तो उन परिदृश्यों में से आज की संभावना है, लेकिन जब मछली का आविष्कार किया गया था, तो वे थे।
तो क्लाइंट मिडनाइट कमांडर के डेवलपर्स ने अपना समाधान बनाने के बारे में निर्धारित किया। यह सिद्धांत में एससीपी के समान है, लेकिन अधिक कमांड हैं। क्लाइंट आदेशों को भेजता है जो इस तरह दिखते हैं:
#RETR /some/name
ls -l /some/name | ( read a b c d x e; echo $x ); echo '### 100'; cat /some/name; echo '### 200'
यदि आप फिश सर्वर से बात कर रहे हैं, तो यह #RETR
कमांड की व्याख्या करेगा । हालाँकि यदि दूरस्थ सर्वर में फिश सर्वर स्थापित नहीं है, तो कमांड शेल द्वारा व्याख्या की जाएगी। पहले एक टिप्पणी, फिर एक कमांड जो फ़ाइल के बारे में जानकारी प्रिंट करता है, उसके बाद कुछ मार्करों में फ़ाइल सामग्री घिरी हुई है।
प्रभावी रूप से, scp या मछली की अनुपस्थिति में, क्लाइंट ने "अपना स्वयं का" scp समतुल्य रोल किया है - लेकिन यह समान रूप से शेल कमांड को नाम बदलने, स्थानांतरित करने, ट्रंकट, आदि के लिए भेज सकता है।
मछली का विवरण यहां मध्यरात्रि कमांडर स्रोत में है ।
यह सब अंत-उपयोगकर्ता के दृष्टिकोण से क्या मतलब है?
- पुराने एसएसएच सर्वर कार्यान्वयन एसटीपी का समर्थन करते हैं, लेकिन एसएफटीपी नहीं; आप इन के साथ एक SFTP ग्राहक का उपयोग नहीं कर सकते
- प्रदर्शन, विश्वसनीयता और लचीलेपन के लिए SFTP का उपयोग करें
- आपका "scp" ग्राहक भेस में एक SFTP ग्राहक हो सकता है ( उद्धरण आवश्यक )
- मछली आला परिस्थितियों में उपयोगी हो सकती है, लेकिन अन्यथा अधिक मानक SFTP का उपयोग करें।