我正在为我的应用程序构建一个可以登录FTPS或SFTP服务器的SFTP / FTPS插件。 FTPS和SFTP的身份验证属性有何不同?

时间:2015-10-22 20:33:08

标签: sftp ftp-server

我的应用程序需要从远程FTPS或SFTP服务器访问文件,具体取决于我的应用程序用户想要连接的内容。我需要能够访问文件夹中的文件内容或创建文件夹。 1)用户必须输入的FTPS和SFTP服务器的登录属性有何不同? 2)有什么方法可以检测它是SFTP还是FTPS服务器?

1 个答案:

答案 0 :(得分:0)

  1. SFTP没有任何身份验证。 SFTP协议应该通过SSH连接使用,因此它依赖于SSH进行身份验证。所以SSH的所有认证机制都适用。此类机制的列表非常广泛 - 您可以使用密码,私钥("公钥认证"),X.509证书(不是流行的选项),键盘交互(质询 - 响应)进行身份验证对话框,也可以通过GSS-API使用Kerberos和其他可能的机制。 FTPS作为FTP-over-TLS也可以使用各种机制。 FTP默认使用用户名/密码,但可能使用SITE命令可以实现一些棘手的机制。 TLS协议包括使用X.509证书的客户端身份验证,预共享对称密钥,普通PKI密钥,OpenPGP密钥。

  2. SFTP和FTP / FTPS 完全不同的协议。服务器在不同的端口上运行如果要实现协议自动检测,可以尝试以下操作:连接到服务器,如果它在200-500毫秒内发送欢迎SSH消息,您就知道它是SSH(可能是SFTP)服务器。如果它发送欢迎FTP消息,它是一个FTP服务器(这包括FTPS的显式TLS模式)。如果它什么都不发送,那么它可以是一个TLS服务器,你可以在这个连接上有隐含的FTPS。