我无法使用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。
答案 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();