2009-05-26 72 views
0

我无法使用SharpSSH进行安全的FTP连接。到现在为止我一直在使用DOS命令行应用程序MOVEit自由地进行连接,并罚款接口:无法通过FTP连接SharpSSH

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

您正在使用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) 
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();