如何获得远程服务器的sftp版本?

作为尝试debugging问题的一部分,我想知道哪个版本的sftp安装在我试图推送文件的远程服务器上。

我被告知在命令行使用-vvv ,但是我不能提供任何关于它的文档。 还有其他的select吗? 我的服务器是基于Linux的。

我的另一个问题是:说两台服务器没有安装相同版本的SFTP,是否有一种协议版本的协商,以确保他们说'相同的语言'?

要获得远程SSH版本,可以telnet到ssh端口。 远程SSH服务器将发送其软件版本字符串:

 $ telnet localhost 22 Trying ::1... Connected to localhost. Escape character is '^]'. SSH-2.0-OpenSSH_6.9 

在ssh调试输出中,你会找到这些行:

 debug1: Local version string SSH-2.0-OpenSSH_6.9 debug1: Remote protocol version 2.0, remote software version OpenSSH_6.9 

第一行是本地客户端的版本。 第二行是远程服务器的ssh协议和软件版本。

你在这里找的是“OpenSSH_6.9”的一部分。 这告诉你远程服务器是OpenSSH。 实际的SFTP服务器几乎可以肯定是该版本的OpenSSH附带的sftp-server程序。

如果您特别需要SFTP协议版本 ,则sftp命令行实用程序具有“版本”命令,该命令将打印协商的协议版本:

 sftp> version SFTP protocol version 3 

你也可以通过运行“sftp -vv”来寻找这一行的调试输出:

 debug2: Remote version: 3 

请注意,OpenSSH是目前使用最广泛的SSH服务器,它统一实现了SFTP版本3。

我将补充说,没有真正的OpenSSH调试输出文档。 理解它的方法是下载源代码的副本,并找出哪些调试消息具有所需的信息。