لا يمكن الحصول على sharpssh للاتصال عبر بروتوكول نقل الملفات

StackOverflow https://stackoverflow.com/questions/910985

  •  06-09-2019
  •  | 
  •  

سؤال

أواجه مشكلة في إجراء اتصال FTP آمن باستخدام Sharpssh. حتى الآن كنت أستخدم تطبيق سطر الأوامر DOS Moveit بحرية لجعل الاتصال، ويتصل بشكل جيد:

C:\> ftps -user:ABC -password:123 xxx.xxx.xxx.mil

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

Dim sftp = New Tamir.SharpSsh.Sftp("xxx.xxx.xxx.mil", "ABC", "123")
sftp.Connect()

أو

Dim host = New Tamir.SharpSsh.SshStream("xxx.xxx.xxx.mil", "ABC", "123")

أي فكرة عما قد أفعله خطأ، أو كيف يمكنني معرفة ما الفشل؟

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

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

المحلول

أنت تستخدم Tamir.Sharpssh، وهي مكتبة SSH. ومع ذلك، يبدو أنك تتصل بخادم FTPS (أو FTP / SSL). FTPs هو بروتوكول مختلف تماما وليس لديه شيء مشترك مع SFTP ولا SSH.

يناقش الصفحة التالية على موقعنا على موقعنا الاختلافات بين بروتوكولات FTP و FTP / SSL و FTPS و SFTP: rebex.net/secure-ftp.net/.

ملخص موجز يتبع:

  • بروتوكول نقل الملفات بروتوكول نقل الملفات القديم غير الآمن. ينقل كلمة مرور النص واضحة عبر الشبكة.

  • FTPS - FTP على القناة المشفرة TLS / SSL. FTP وعلاقة FTPS تشبه HTTP و HTTPS.

  • FTP / SSL - نفس ftps

  • SFTP - بروتوكول نقل الملفات SSH. ليس لديه شيء مشترك مع FTP (توقع الاسم). يعمل عبر قناة الاتصالات المشفرة SSH.

  • تأمين FTP - يمكن أن يكون إما SFTP أو FTPS :-(

قد تحاول حزمة نقل الملفات Rebex مكون، الذي يدعم كلا من بروتوكولات SFTP و FTPS (لكنه يكلف بعض الأموال على عكس Sharpssh).

ستبدو الاتصال بخادم FTP / SSL هكذا:

' Create an instance of the Ftp class. 
Dim ftp As New Ftp()

' Connect securely using explicit SSL. 
' Use the third argument to specify additional SSL parameters. 
ftp.Connect(hostname, 21, Nothing, FtpSecurity.Explicit)

' Connection is protected now, we can log in safely. 
ftp.Login(username, password)

نصائح أخرى

بديل آخر كبير (أيضا غير مجاني) هو edtftpnet / برو, ، مكتبة ناضجة مستقرة تقدم الدعم الكامل ل FTPS (و SFTP) في .NET.

إليك بعض رمز العينة للاتصال:

   SecureFTPConnection ftpConnection = new SecureFTPConnection();

   // setting server address and credentials
   ftpConnection.ServerAddress = "xxx.xxx.xxx.mil";
   ftpConnection.UserName = "ABC";
   ftpConnection.Password = "123";

   // select explicit FTPS
   ftpConnection.Protocol = FileTransferProtocol.FTPSExplicit;

   // switch off server validation (only do this when testing)
   ftpConnection.ServerValidation = SecureFTPServerValidationType.None;

   // connect to server
   ftpConnection.Connect();
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top