Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux ssh协议的差异,显然是ssh 6.x和5.x之间的差异_Linux_Macos_Ssh - Fatal编程技术网

Linux ssh协议的差异,显然是ssh 6.x和5.x之间的差异

Linux ssh协议的差异,显然是ssh 6.x和5.x之间的差异,linux,macos,ssh,Linux,Macos,Ssh,TL;DR:为什么OpenSSH 6.x的ssh客户端在连接时立即发送字符串“OpenSSH_6.2p2”,而OpenSSH 5.x客户端不发送任何内容? 我试图通过HTTP/S代理让ssh隧道工作。我可以使用http CONNECT请求获得一个正确隧道的TCP连接。它可以在Mac OSX 10.9上与SSH客户端正常工作,但不能在运行旧OSX的旧Mac上工作 这导致了以下奇怪之处,我无法解释。(对于熟悉SSH协议的人来说,这可能是一个愚蠢的问题,但在搜索了一点之后,我找不到该协议应该是什么样

TL;DR:为什么OpenSSH 6.x的ssh客户端在连接时立即发送字符串“OpenSSH_6.2p2”,而OpenSSH 5.x客户端不发送任何内容?


我试图通过HTTP/S代理让ssh隧道工作。我可以使用http CONNECT请求获得一个正确隧道的TCP连接。它可以在Mac OSX 10.9上与SSH客户端正常工作,但不能在运行旧OSX的旧Mac上工作

这导致了以下奇怪之处,我无法解释。(对于熟悉SSH协议的人来说,这可能是一个愚蠢的问题,但在搜索了一点之后,我找不到该协议应该是什么样子的简单解释,我希望不必为了调试该协议而阅读整个RFC;因此这篇文章。)


在带有OpenSSH_6.2p2的Mac OSX 10.9上:

1号航站楼:

nc -l 127.0.0.1 5000
2号航站楼:

ssh test@127.0.0.1 -p 5000
端子1然后输出:

OpenSSH_6.2p2
因此,这个较新的客户端在连接时传输了该字符串。


在CentOS 6.3上使用OpenSSH_5.3p1:

端子1和2的命令与上述命令完全相同

但是终端1不输出任何东西看起来这个旧客户端在连接时没有发送任何内容。


TCP连接本身,从我所知的一切来看,它工作正常。这似乎是协议上的差异。但它们显然都使用SSH“版本2”协议

这两台机器似乎能够轻松地通过SSH相互连接。然而,我的隧道发生了一些奇怪的事情,我试图理解协议在寻找什么,这样我就可以调试了

有人知道这里发生了什么吗?或者,您可能知道哪里有一个简单的1,2,3类型的解释,说明哪一方发送此协议的内容,以及版本差异的任何信息?

此处介绍:

客户端和服务器都应该在连接时发送版本字符串。然而,在早期版本中,客户端似乎在发送其字符串之前等待服务器—这看起来像是一个实现细节,从技术上讲是一个bug(可能在SSH 6.x中已修复),但在实践中通常不会产生问题


如果有人感兴趣,以下是我试图解决的问题:

我不是落选者,但对我来说似乎离题了:。你们最好继续问下去。谢谢你们,我的观点很好,若并没有其他答案,我会在那个里转载。