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

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-соединение, поэтому .СЕТЕВЫЕ классы - это не вариант.Однако я готов попробовать альтернативы SharpSSH, если они существуют.

Это было полезно?

Решение

вы используете 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 компонент, который поддерживает как 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/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();
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top