Не удается заставить SharpSSH подключиться через FTP

У меня возникли проблемы с созданием безопасного FTP-подключения с помощью SharpSSH. До сих пор я использовал приложение командной строки DOS MOVEit Freely для установления соединения, и оно отлично соединяется:

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()

or

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

Любая идея, что я могу делать неправильно, или как я могу понять, что не получается?

Обратите внимание, что мне нужно безопасное FTP-соединение, поэтому классы .NET не подходят. Я готов попробовать альтернативы SharpSSH, если они существуют.


person gfrizzle    schedule 26.05.2009    source источник


Ответы (2)


вы используете Tamir.SharpSsh, библиотеку SSH. Однако похоже, что вы подключаетесь к серверу FTPS (или FTP/SSL). FTPS — это совершенно другой протокол, не имеющий ничего общего ни с SFTP, ни с SSH.

На следующей странице нашего веб-сайта обсуждаются различия между протоколами FTP, FTP/SSL, FTPS и SFTP: rebex .net/secure-ftp.net/.

Краткое резюме:

  • FTP простой, старый, небезопасный протокол передачи файлов. Передает открытый текстовый пароль по сети.

  • FTPS — FTP по зашифрованному каналу TLS/SSL. Связь FTP и FTPS аналогична HTTP и HTTPS.

  • FTP/SSL — то же, что и FTPS

  • SFTP — протокол передачи файлов SSH. Не имеет ничего общего с FTP (ожидайте название). Работает по зашифрованному каналу связи SSH.

  • Безопасный FTP - может быть либо SFTP, либо FTPS :-(

Вы можете попробовать компонент Rebex File Transfer Pack, который поддерживает протоколы 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)
person Martin Vobr    schedule 27.05.2009

Другой отличной альтернативой (также не бесплатной) является edtFTPnet/PRO, стабильная, зрелая библиотека, которая предлагает полную поддержку 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();
person Bruce Blackshaw    schedule 04.06.2009