سؤال

أثناء البحث عن عميل SFTP في بروتوكول نقل ملفات C# SSH (SFTP) ، صادفت هذين المشروعين المناسبين - واحد و اثنين.

أثناء محاولة فهم الأساسيات ، صادفت هذا الإرباك مقال ويكيبيديا. ما هو الفرق بين SFTP و FTP على SSH؟ لا يبدو أن أي مكتبة تقدم دعمًا لـ "FTP Over SSH" ، إذا كانت مختلفة.

هل كانت مفيدة؟

المحلول

هذا هو الفرق:

  • SFTP (بروتوكول نقل ملف SSH) هو بروتوكول يوفر إمكانات نقل الملفات والمعالجة. يمكن أن يعمل على أي دفق بيانات موثوق به ، ولكن عادة ما يتم استخدامه مع SSH
  • يستخدم "FTP Over SSH" بروتوكول FTP القديم العادي ، ولكن نفق SSH يتم وضعه بين العميل والخادم.

ربما لن تجد مكتبات لـ "FTP Over SSH" لأنه عادة ما يتم إعداد النفق عن طريق تشغيل أمر SSH ، وبمجرد إعداده ، لا يحتاج العملاء والخوادم إلى معرفة النفق ؛ إنهم يفتحون فقط المنافذ ونقل البيانات التي سيفعلونها بدون نفق.

راجع للشغل ، قد يكون خيار آخر لك FTP على SSL (FTPs), ، وهو مدعوم من .NET. (نرى http://msdn.microsoft.com/en-us/library/system.net.ftpwebrequest.enablessl.aspx.)

نصائح أخرى

في الأساس ، هناك بروتوكولات نقل الملف التالية:

  • FTP - بروتوكول FTP القديم البسيط الذي كان موجودًا منذ السبعينيات. يرمز الاختصار إلى "بروتوكول نقل الملف". وعادة ما يتم تشغيله عبر منفذ TCP 21.

  • SFTP - بروتوكول نقل ملفات آخر مختلف تمامًا لا علاقة له بـ FTP. يعمل SFTP على جلسة SSH ، وعادة ما تكون على منفذ TCP 22. لقد كان موجودًا منذ أواخر التسعينيات. يخضع الاختصار في الواقع إلى "بروتوكول نقل ملف SSH".

  • FTP Over SSH - 1) ممكن ، ولكن نادر للغاية لنفق بروتوكول FTP من خلال قناة SSH 2) اسمه SFTP بشكل غير صحيح

(لمزيد من التفاصيل انظر "Secure FTP ، FTP/SSL ، SFTP ، FTPs ، FTP ، SCP ... ما الفرق؟"الصفحة في Rebex)

إخلاء المسئولية: أنا أعمل من أجل Rebex

SFTP هو في الواقع بروتوكول آخر يعمل فوق SSH - امتداد SSH إذا أردت. يميل الناس إلى استخدام SFTP بدلاً من نفق FTP عبر SSH.

للحصول على دعم SFTP الشامل في .NET حاول EDTFTPNET/PRO. لقد مر وقت طويل مع دعم العديد من خوادم SFTP المختلفة.

SFTP هو بروتوكول خاص. تستخدم FTP عبر SSH FTP بمجرد توصيلها عبر SSH.

FTP على SSH هو نفق بروتوكول FTP عادي من خلال SSH. SFTP هي آلية نقل الملفات التي تقدمها SSH وهي بروتوكول مختلف تمامًا. لم أر أي شخص يستخدم FTP عبر SSH.

  • يقف SFTP لبروتوكول نقل ملف SSH. انها ليست FTP على SSL وليس FTP على SSH. يتم توحيد SFTP في RFC 4253.
  • يرمز FTP إلى بروتوكول نقل الملفات الذي يتم تعريفه بواسطة RFC 959 والإضافات الأخيرة. FTP تحظى بشعبية كبيرة ولكن غير مضمونة. لذلك تم تقديم FTP عبر SSL ويسمى FTPs أو FTP/SSL.

بالنسبة للمصادقة ، استخدم SFTP مفاتيح SSH ، بينما تستخدم FTPs شهادات X.509.

لقد استخدمت Sharpssh لسنوات ويعمل بشكل رائع. على الرغم من أنه لم ير أي تطور في لحظة ، فإن الكود المصدري سهل الفهم والعمل معه. لقد قمت بالتعديلات وأعيد تجميعها لمشاريعي الخاصة دون أي مشكلة ، على الرغم من أنها تعمل بشكل جيد كما هي دون الحاجة إلى أي من ذلك.

إذا لم تكن بحاجة إلى القيام بأي شيء يتوهم ، فيمكنك أيضًا كتابة Wrapper .NET الخاص بك لعميل PSFTP.exe الخاص بك مع الحد الأدنى من الرمز.

على الرغم من أنني لم أستخدم مكتبة SFTP الخاصة بـ Greg Finzer ، إلا أنني أعرفه شخصيًا وقويًا أن لديه منتجًا عالي الجودة إذا كنت بحاجة إلى شيء نشط وقوي. لكن بالنسبة للأشياء البسيطة ، حققت نجاحًا كبيرًا في الخيارات المجانية التي ذكرتها.

لقد قمت للتو بإنشاء أ .NET SFTP Library. أحد الأشياء التي تعلمتها في هذه العملية هي كيف تتم FTP المختلفة إلى SFTP. أنت في الواقع تتواصل مع خادم SSH بدلاً من خادم FTP. ليس فقط البروتوكول ، الأوامر مختلفة تمامًا التي ترسلها إلى خادم SSH.

هنا حلقة الوصل إلى مكتبتي.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top