无法让SharpSSH通过FTP连接

时间:2009-05-26 14:28:04

标签: .net ftp sftp sharpssh

我无法使用SharpSSH建立安全的FTP连接。到目前为止,我一直在使用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()

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

知道我可能做错了什么,或者我怎么能弄清楚什么是失败的?

请注意,我需要一个安全的FTP连接,因此.NET类不是一个选项。如果它们存在,我愿意尝试替代SharpSSH。

2 个答案:

答案 0 :(得分:2)

您使用的是Tamir.SharpSsh,这是一个SSH库。但是,您似乎正在连接到FTPS(或FTP / SSL)服务器。 FTPS是完全不同的协议,与SFTP和SSH没有任何共同之处。

我们网站上的以下页面讨论了FTP,FTP / SSL,FTPS和SFTP协议之间的区别:rebex.net/secure-ftp.net/

简要总结如下:

  • FTP普通,旧的,不安全的文件传输协议。通过网络传输明文密码。

  • FTPS - FTP over 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)

答案 1 :(得分:2)

另一个很好的选择(也不是免费的)是edtFTPnet/PRO,一个稳定,成熟的库,它为.NET中的FTPS(和SFTP)提供全面支持。

以下是一些连接示例代码:

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