एसएफटीपी, एससीपी और फिश प्रोटोकॉल में क्या अंतर है?


59

मुझे लगता था कि एससीपी एसएसएच से अधिक फ़ाइलों की प्रतिलिपि बनाने का एक उपकरण है, और एसएसएच से अधिक फ़ाइलों को कॉपी करने को एसएफटीपी कहा जाता है, जो कि स्वयं फिश का पर्याय है।

लेकिन अब जैसा कि मैं विंडोज में ऐसा करने के लिए कुल कमांडर प्लगइन की तलाश कर रहा था, मैंने देखा है कि इसके पृष्ठ पर यह कहता है "सुरक्षित एफ़टीपी (एसएसएच के माध्यम से एफ़टीपी) के माध्यम से दूरस्थ सर्वर तक पहुंच की अनुमति देता है। एसएसएच 2 की आवश्यकता है। यह समान नहीं है। एससीपी के रूप में! ”।

अगर यह वही नहीं है तो मैं गलतफहमी क्या हूं?


5
यह पिछले प्रश्न का विस्तार है । (@ इवान: इसका उल्लेख करना उपयोगी होता।)
गिल्स

यह भी देखें superuser.com/q/134901/133844
पेरे

जवाबों:


57

SFTP ssh पर FTP प्रोटोकॉल नहीं है, लेकिन SSH2 (और कुछ SSH1 कार्यान्वयन) में शामिल SSH प्रोटोकॉल के लिए एक विस्तार है। SFTP एफ़टीपी की तरह एक फ़ाइल स्थानांतरण प्रोटोकॉल है, लेकिन नेटवर्क प्रोटोकॉल के रूप में SSH प्रोटोकॉल का उपयोग करता है (और प्रमाणीकरण और एन्क्रिप्शन को संभालने के लिए SSH छोड़ने से लाभ होता है)।

एससीपी केवल फाइलों को स्थानांतरित करने के लिए है, और सूची दूरस्थ निर्देशिकाओं या फ़ाइलों को हटाने जैसी अन्य चीजें नहीं कर सकती हैं, जो एसएफटीपी करता है।

मछली अभी तक एक और प्रोटोकॉल प्रतीत होती है जो फ़ाइलों को स्थानांतरित करने के लिए SSH या RSH का उपयोग कर सकती है।


11
वर्थ ऐडिंग: इसमें एफटीपीएस भी है, जो टीएलएस पर एफटीपी है।
मिकमेकाना

3
@mikemaccana आप तब FTPES विच जोड़ सकते हैं एक नियमित रूप से ftp कनेक्शन पर स्पष्ट रूप से ftps का उपयोग करने की संभावना है
किवी

26

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 पैकेज scpSFP बाइनरी के लिए सिम्प्लेक्स के साथ उपयोगकर्ता बाइनरी को प्रतिस्थापित करते हैं । इस 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 का उपयोग करें।

20

इसे सरल रखो:

SFTP = SSH + SFTP-server on server
SCP  = SSH + `scp` on server side
FISH = SSH + `dd` (and some other basic Unix utilities on the server side only) 

1
लेकिन sftpऔर scpफिश के विपरीत, सर्वर साइड पर विशेष कार्यक्रमों की आवश्यकता होती है, जो दूरस्थ शेल में केवल मूल यूनिक्स उपयोगिताओं का उपयोग करता है।
imz -

फिश के विवरण के अनुसार, फिश की एक उल्लेखनीय विशेषता यह है कि इसके लिए रिमोट साइड ( scpएसटीपी या एसटीपीपी-सर्वर की तरह कोई सर्वर प्रोग्राम नहीं) पर कुछ विशेष की आवश्यकता नहीं होती है । और वास्तव में ऐसे मामले हैं जब रिमोट साइड एक "प्रतिबंधित" यूनिक्स है, जहां आप जो चाहें स्थापित नहीं कर सकते हैं: एसएसएच (वाईफाई पर) के माध्यम से एंड्रॉइड पर फ़ाइलों को स्थानांतरित करने के लिए, मैंने rpush-cat स्क्रिप्ट का सेट लिखा है - शायद, एक फिश क्लाइंट काम करेगा। ( tramp-fish.elEmacs में भी हो सकता है: नियमित ट्रम्प क्लाइंट एंड्रॉइड पर नहीं होने के कारण काम नहीं किया stat।)
imz - Ivan Zakharyaschev

2
क्या आप इस बारे में विस्तार से बता सकते हैं scpकि क्लाइंट साइड के अलावा सर्वर साइड पर भी कैसे जरूरी है? एक त्वरित Google खोज के साथ, मुझे ऐसा कुछ भी नहीं मिला जो पुष्टि करता हो कि scpसर्वर साइड पर भी आवश्यक है।
जोहान्स बिटनर

11

मछली और एसएफटीपी समान हैं, और जैसा कि एसएसएच पर दोनों काम करते हैं, एसएफटीपी को हस्तांतरण की सुविधा के लिए एसएसएच सर्वर में विशिष्ट समर्थन और कॉन्फ़िगरेशन की आवश्यकता होती है, लेकिन यह थोड़ा अधिक सुरक्षित है और SysAdmins के लिए केवल SFTP की अनुमति देता है (इन स्थितियों में फिश जीता। 't काम)।

फिश को कॉपी करने के लिए एक शेल (sh / rsh) की आवश्यकता होती है, और इसलिए मशीन को पूर्ण SSH एक्सेस की आवश्यकता होती है, मुझे लगता है कि इसे सुरक्षित करना कठिन होगा (मैं इस पर निष्पक्ष रूप से टिप्पणी नहीं कर सकता क्योंकि मैंने कभी नहीं किया है)।

जहाँ संभव हो, मैं SFTP, scp, मछली (उस क्रम में) की सिफारिश करूँगा।

विकिपीडिया मछली लेख


लिंक किए गए वर्णन के अनुसार, मछली की एक उल्लेखनीय विशेषता यह है कि इसके लिए दूरस्थ पक्ष (सर्वर scpया एसटीपी-सर्वर की तरह कोई प्रोग्राम नहीं) की आवश्यकता होती है । और वास्तव में ऐसे मामले हैं जब रिमोट साइड एक "प्रतिबंधित" यूनिक्स है, जहां आप जो चाहें स्थापित नहीं कर सकते हैं: एसएसएच (वाईफाई पर) के माध्यम से एंड्रॉइड पर फ़ाइलों को स्थानांतरित करने के लिए, मैंने rpush-cat स्क्रिप्ट का सेट लिखा है - शायद, एक फिश क्लाइंट काम करेगा। ( tramp-fish.elEmacs में भी हो सकता है: नियमित ट्रेंप क्लाइंट काम नहीं करता statथा क्योंकि एंड्रॉइड पर नहीं था।)
imz - Ivan Zakharyaschev
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.