我读过这篇文章:
这两者彼此非常不同,尽管他们都瞄准了 服务于同一目的。 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吗?我在通过防火墙发送时遇到问题。
谢谢!
答案 0 :(得分:6)
SFTP使用SSH传输文件。如果在远程计算机上运行ssh,则可以将其更改为此值。我不确定C#是否支持它。根据这个:http://social.msdn.microsoft.com/Forums/en-US/netfxnetcom/thread/817b4f71-7e88-4b62-b48a-8a5edca800fd/答案是否定的。
FTPS正在将FTP添加到FTP上。有点像HTTPS就是HTTP之上的SSL。
您的代码肯定使用FTPS。
您的防火墙问题可能在此解释:http://en.wikipedia.org/wiki/Ftps#Firewall_incompatibilities