无法通过FTP连接SharpSSH
我无法使用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。
您正在使用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)
另一个很好的选择(也没有自由)是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();