2013-04-25 69 views
0

在SSH傳輸層協議規範http://www.ietf.org/rfc/rfc4253.txt的「4.2。協議版本交換」部分,它說:「當連接建立後,雙方必須發送一個標識字符串。」。哪一方將在SSH傳輸層協議中啓動版本協商?

但它沒有定義哪一方應該啓動這個過程,服務器端還是客戶端?

這裏有一些意見,

  1. http://www.cisco.com/web/about/ac123/ac147/archived_issues/ipj_12-4/124_ssh.html, 「圖2:SSH傳輸層協議分組交換」,客戶端發起的交換過程。

  2. 我嘗試使用JSCH作爲客戶端來連接服務器,這裏是快照。服務器端首先發送SSH協議版本。 enter image description here

這裏是一個問題,無論是JSCH和SSH服務器不發送協議版本。 TCP連接在程序包93,94,95中設置。5秒後,服務器端關閉程序包99中的連接。

你能幫忙弄清楚爲什麼客戶端和服務器不發送協議版?非常感謝!

enter image description here

問候, 喬伊

回答

0

是的,我們發現某些思科盒子不發送版本字符串 而沒有收到客戶端的版本字符串。 最近的jsch版本會立即發送。

+0

正確。我檢查了版本jsch-0.1.37,並在Session.java中,它將首先發送V_C,然後等待服務器的版本。而在jsch-0.1.20中,它將首先接收服務器的版本,然後發送客戶端版本。所以我會用jsch-0.1.20的新版本替換jsch。謝謝。 – 2013-04-26 06:07:16

0

,但它並沒有定義哪一方將啓動這個過程中,服務器端或客戶端?

正確。由於雙方都必須發送,而且兩者都沒有被定義爲對另一方的迴應,所以首先這樣做並不重要。

+0

謝謝,EJP。你知道爲什麼客戶端和服務器在上述問題中不發送協議版本嗎?謝謝。 – 2013-04-25 03:05:15

+0

這是jsch舊版本jsch-0.1.20的問題,謝謝EJP。 – 2013-04-26 06:10:00