为什么 SFTP 不起作用(SSH 起作用)?

为什么 SFTP 不起作用(SSH 起作用)?

我有一台装有 Ubuntu Server 16.04 + VestaCP 的专用服务器。SSH 访问运行正常,但 SFTP 出现故障。我不知道它什么时候出现故障,但在此之前一切都按预期运行。

当我从本地机器连接到 sftp 时,它可以工作:

Mar  6 13:52:37 local sftp-server[2120]: session opened for local user user1 from [10.10.80.120]
Mar  6 13:52:37 local sftp-server[2120]: received client version 3
Mar  6 13:52:37 local sftp-server[2120]: debug3: request 1: realpath
Mar  6 13:52:37 local sftp-server[2120]: realpath "."
Mar  6 13:52:37 local sftp-server[2120]: debug1: request 1: sent names count 1

当我尝试从远程主机执行此操作时,我收到一行:

Mar  6 19:34:06 server sftp-server[3545]: session opened for local user root from [xxx.xxx.xxx.xxx]

什么都没发生,连接因超时而中断。我没有收到任何错误,无法确定此问题的原因。

我在 /etc/ssh/sshd_config 中有默认设置:

Subsystem sftp /usr/lib/openssh/sftp-server -l debug3

我不想将其替换为 internal-sftp。它应该无需更改即可工作,因为它以前工作过。

答案1

当 SFTP 客户端连接到 SFTP 服务器时,首次数据交换接下来,客户端会将其 SFTP 协议版本发送给服务器。服务器会回复其愿意用于会话的 SFTP 协议版本,然后客户端和服务器便会继续进行下去。

您可以在第一个日志示例中看到客户端将其版本发送到服务器:

3 月 6 日 13:52:37 本地 sftp 服务器 [2120]: 收到客户端版本 3

第二个日志样本中缺少该行。最简单的解释是客户端从未发送过它。

简而言之,第二种情况中使用的 SFTP 客户端似乎出现故障。它没有发送启动 SFTP 交换所需的消息。

相关内容