![某些 FTP 客户端通过端口 22 进行访问时出现问题](https://linux22.com/image/650095/%E6%9F%90%E4%BA%9B%20FTP%20%E5%AE%A2%E6%88%B7%E7%AB%AF%E9%80%9A%E8%BF%87%E7%AB%AF%E5%8F%A3%2022%20%E8%BF%9B%E8%A1%8C%E8%AE%BF%E9%97%AE%E6%97%B6%E5%87%BA%E7%8E%B0%E9%97%AE%E9%A2%98%20.png)
我在连接 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 来重现您的问题。
令人困惑的是,你用proftpd,而日志记录(“Did not received identification string from...”)是由OpenSSH服务器生成的。