我在连接 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服务器生成的。