Linux ssh协议的差异,显然是ssh 6.x和5.x之间的差异
TL;DR:为什么OpenSSH 6.x的ssh客户端在连接时立即发送字符串“OpenSSH_6.2p2”,而OpenSSH 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协议的人来说,这可能是一个愚蠢的问题,但在搜索了一点之后,我找不到该协议应该是什么样
我试图通过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中已修复),但在实践中通常不会产生问题
如果有人感兴趣,以下是我试图解决的问题:我不是落选者,但对我来说似乎离题了:。你们最好继续问下去。谢谢你们,我的观点很好,若并没有其他答案,我会在那个里转载。