某些 FTP 客户端通过端口 22 进行访问时出现问题

某些 FTP 客户端通过端口 22 进行访问时出现问题

我在连接 SFTP 服务器时遇到问题。

在同一台计算机上,当我通过应用程序 A 访问 SFTP 时,我获得了访问权限,但是当我使用应用程序 B 时,我却无权访问。

在我的服务器日志中我可以看到当我通过应用程序 BI 连接时收到以下错误:

未收到来自...的识别字符串

端口 22 已开放且运行正常。

我能够通过两个应用程序上的端口 21 连接到 FTP,并且两个应用程序都支持端口 22。

答案1

从服务器日志记录(“未收到来自...的识别字符串”),我假设您正在使用 FTP 协议连接到 SSH/SFTP 端口(22)。

确保应用程序 B 确实支持 SSH/SFTP,并且您在其配置中选择了该协议(与输入端口 22 相反,但使用 FTP 协议)。

确保您没有将 SFTP 与 FTPS(TLS/SSL 上的 FTP)混淆。


当打开 SSH/SFTP 连接时,服务器会发送其标识字符串(如“SSH-2.0-OpenSSH_5.3”),SSH/SFTP 客户端则以其标识字符串(如“SSH-2.0-WinSCP_release_5.6.5”)进行响应。

如果您使用 FTP 客户端连接到 SSH/SFTP 服务器,FTP 客户端会等待 FTP 欢迎消息,并一直等待其结束行,然后再发送任何命令。相反,它会获取 SSH 标识字符串。根据 FTP 客户端的实现,它要么在识别出 SSH 标识字符串不是有效的 FTP 消息时中止;要么在等待 FTP 欢迎消息的结束行时超时。当然,除非 SSH/SFTP 服务器恰好先超时,等待客户端的 SSH 标识字符串。您的情况可能就是这样。


我可以通过使用配置为使用 FTP 协议(​​但 SFTP 端口 22)的 WinSCP 客户端连接到 OpenSSH SFTP 服务器的端口 22 来重现您的问题。


令人困惑的是,你用,而日志记录(“Did not received identification string from...”)是由OpenSSH服务器生成的。

相关内容