3

我读了这篇文章:

尽管它们都旨在服务于相同的目的,但两者彼此非常不同。SFTP 使用单个通道来传输和接收所有相关数据,而 FTPS 使用另一个为数据动态决定的通道。FTPS 在通过防火墙时经常会出现问题,因为它不知道数据正在使用的端口,并且无法允许流量通过该端口。FTPS 以文本格式发送消息,允许人们阅读日志并确定会话期间发生的情况。这对于 SFTP 是不可能的,因为消息不是文本形式,而是二进制形式。

阅读更多:FTPS 和 SFTP 之间的区别 | 之间的区别| FTPS 与 SFTP http://www.differencebetween.net/technology/internet/difference-between-ftps-and-sftp/#ixzz20KUGWr00

我不想假设任何事情,因为如果我错了,这只会让我的工作更加困难,但是当我通过 C#/.Net4 像这样发送文件时:

  var request = (FtpWebRequest) WebRequest.Create(FtpUrl + filename);
    request.Method = WebRequestMethods.Ftp.UploadFile;

    var secureString = new SecureString();
    foreach (var b in Encoding.Default.GetBytes(FtpPassword))
      secureString.AppendChar((char) b);
    request.Credentials = new NetworkCredential(FtpUsername, secureString);
    request.EnableSsl = true;

那是SFTP还是FTPS?由于 EnableSsl,我假设 FTPS 如文章所示。

如果不是 SFTP,我可以将其改为 SFTP 吗?我在通过防火墙发送时遇到问题。

谢谢!

4

1 回答 1

6

SFTP 使用 SSH 传输文件。如果您在远程计算机上运行 ssh,则可以将其更改为此。我不确定 C# 是否支持它。据此:http ://social.msdn.microsoft.com/Forums/en-US/netfxnetcom/thread/817b4f71-7e88-4b62-b48a-8a5edca800fd/答案是否定的。

FTPS 正在将 SSL 添加到 FTP。有点像 HTTPS 是 HTTP 之上的 SSL。

您的代码肯定使用 FTPS。

您的防火墙问题可能在这里解释:http ://en.wikipedia.org/wiki/Ftps#Firewall_incompatibilities

于 2012-07-11T16:00:51.127 回答