【问题标题】:which side will initiate the version negotiation in the SSH transport layer protocol?SSH 传输层协议中哪一方会发起版本协商?
【发布时间】:2013-04-25 02:06:13
【问题描述】:

在 SSH 传输层协议规范,http://www.ietf.org/rfc/rfc4253.txt,“4.2. 协议版本交换”部分,它说,“当连接建立后,双方必须发送一个标识字符串。”。

但它没有定义哪一方应该启动这个过程,服务器端还是客户端?

这里有一些观察,

  1. http://www.cisco.com/web/about/ac123/ac147/archived_issues/ipj_12-4/124_ssh.html,“图2:SSH传输层协议数据包交换”中,客户端发起交换过程。

  2. 我尝试使用 JSCH 作为客户端连接服务器,这是快照。服务器端先发送 SSH 协议版本。

这里有一个问题,JSCH 和 SSH 服务器都不发送协议版本。 TCP连接建立在93、94、95包中,5秒后服务器端关闭99包中的连接。

你能帮忙弄清楚为什么客户端和服务器都不发送协议版本吗?非常感谢!

问候, 乔伊

【问题讨论】:

    标签: ssh


    【解决方案1】:

    是的,我们发现某些 cisco box 不发送其版本字符串 没有收到客户端的版本字符串。 最近的jsch版本会立即发送。

    【讨论】:

    • 正确。我检查了版本jsch-0.1.37,在Session.java中,它会先发送V_C,然后等待服务器的版本。而在 jsch-0.1.20 中,它会先接收服务器的版本,然后发送客户端的版本。所以我将用 jsch-0.1.20 中的更新版本替换 jsch。谢谢。
    【解决方案2】:

    但它没有定义哪一方应该启动这个过程,服务器端还是客户端?

    正确。由于双方都必须发送它,并且两者都不是对对方的响应,因此谁先发送无关紧要。

    【讨论】:

    • 谢谢,EJP。你知道为什么客户端和服务器都没有在上面的问题中发送协议版本吗?谢谢。
    猜你喜欢
    • 2018-10-30
    • 2018-07-07
    • 1970-01-01
    • 1970-01-01
    • 2018-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多