SFTP 版本不匹配 - SFTP 服务器仅支持版本 3
SFTP version mismatch - SFTP server only support versions 3
SFTP 客户端最初发送 SSH_FXP_INIT
(版本 2)。 SFTP 服务器不发送 SSH_FXP_VERSION
有什么原因吗?相反,它发送 SSH_FXP_STATUS
和信息
SFTP server only support versions 3
那么版本协商怎么可能呢?
或者我遗漏了一些需要完成的事情?
如果有人愿意了解问题并帮助我,我可以详细说明情况。请帮忙!
When the file transfer protocol starts, the client first sends a
SSH_FXP_INIT (including its version number) packet to the server.
The server responds with a SSH_FXP_VERSION packet, supplying the
lowest of its own and the client's version number. Both parties
should from then on adhere to that particular version of the
protocol.
您的客户端仅支持 SFTP 版本 2(可能更旧)。您的服务器支持 SFTP 版本 3(可能更新)。所以协商失败。
3 以下的 SFTP 协议版本并未真正使用。因此,SFTP 实现不支持这些版本是很常见的。版本 3 是迄今为止使用最广泛的版本(由 OpenSSH 支持,不支持较新的版本)。
my client code always sends version 2... On sending this to SFTP server, it sends back version 3
Is it mandatory for SFTP server to reply back SSH_FXP_VERSION with lower version or any default version if client sends SSH_FXP_INIT
我认为服务器响应高于客户端要求的版本违反了标准。但我知道 OpenSSH SFTP 服务器可以做到这一点。它忽略了客户端的请求并始终以 3 响应。所以我假设您的测试机器使用 OpenSSH。
实际上很小difference between 3 and 2(还有1和0):
The SSH_FXP_READLINK and SSH_FXP_SYMLINK messages were added.
The SSH_FXP_EXTENDED and SSH_FXP_EXTENDED_REPLY messages were
added.
The SSH_FXP_STATUS message was changed to include fields 'error message' and 'language tag'.
所以您的 SFTP 2 客户端很可能可以与 SFTP 3 服务器通信,如果客户端不阻塞 SSH_FXP_STATUS
响应中的附加字段。
实际上,OpenSSH SFTP 服务器在响应 3 时表现得像 2,如果客户端要求 2(恕我直言,又一次违反规范)。它特别不会将 error message
字段添加到 SSH_FXP_STATUS
响应中,该字段仅在 3.
中添加
my other test machine ( oracle MFT ) which only supports version 3, does not send SSH_FXP_VERSION packet, but SSH_FXP_STATUS with info and not communication happens
恕我直言,这是正确的行为,但对你来说很不幸。
SFTP 客户端最初发送 SSH_FXP_INIT
(版本 2)。 SFTP 服务器不发送 SSH_FXP_VERSION
有什么原因吗?相反,它发送 SSH_FXP_STATUS
和信息
SFTP server only support versions 3
那么版本协商怎么可能呢?
或者我遗漏了一些需要完成的事情?
如果有人愿意了解问题并帮助我,我可以详细说明情况。请帮忙!
When the file transfer protocol starts, the client first sends a SSH_FXP_INIT (including its version number) packet to the server. The server responds with a SSH_FXP_VERSION packet, supplying the lowest of its own and the client's version number. Both parties should from then on adhere to that particular version of the protocol.
您的客户端仅支持 SFTP 版本 2(可能更旧)。您的服务器支持 SFTP 版本 3(可能更新)。所以协商失败。
3 以下的 SFTP 协议版本并未真正使用。因此,SFTP 实现不支持这些版本是很常见的。版本 3 是迄今为止使用最广泛的版本(由 OpenSSH 支持,不支持较新的版本)。
my client code always sends version 2... On sending this to SFTP server, it sends back version 3
Is it mandatory for SFTP server to reply back SSH_FXP_VERSION with lower version or any default version if client sends SSH_FXP_INIT
我认为服务器响应高于客户端要求的版本违反了标准。但我知道 OpenSSH SFTP 服务器可以做到这一点。它忽略了客户端的请求并始终以 3 响应。所以我假设您的测试机器使用 OpenSSH。
实际上很小difference between 3 and 2(还有1和0):
The SSH_FXP_READLINK and SSH_FXP_SYMLINK messages were added.
The SSH_FXP_EXTENDED and SSH_FXP_EXTENDED_REPLY messages were added.
The SSH_FXP_STATUS message was changed to include fields 'error message' and 'language tag'.
所以您的 SFTP 2 客户端很可能可以与 SFTP 3 服务器通信,如果客户端不阻塞 SSH_FXP_STATUS
响应中的附加字段。
实际上,OpenSSH SFTP 服务器在响应 3 时表现得像 2,如果客户端要求 2(恕我直言,又一次违反规范)。它特别不会将 error message
字段添加到 SSH_FXP_STATUS
响应中,该字段仅在 3.
my other test machine ( oracle MFT ) which only supports version 3, does not send SSH_FXP_VERSION packet, but SSH_FXP_STATUS with info and not communication happens
恕我直言,这是正确的行为,但对你来说很不幸。