2012-01-12 70 views
0

其實,我不確定這是否應該是ssh隧道問題或PuTTY特定問題。但我仍想在開始時將其作爲ssh問題展示。ssh隧道如何區分shell命令數據和端口轉發數據?

我在windows系統下使用ssh tunnel,我使用膩子來做到這一點。 當我通過隧道設置創建膩子會話並連接目標機器時。我在Process Explorer中發現存在兩個TCP連接。

  • 之一是遠程主機的連接:22
  • 另一個被一個本地端口上偵聽(如8000)。

從我的角度來看,它們是有道理的。因爲第一個是真正的ssh連接到遠程ssh服務器,所有真正的out-coming數據將通過。第二個是端口轉發(ssh隧道),映射到遠程http代理的結果,並且它確實按我的意願工作。

然而,這裏還有另一個「數據交換通道」,我的意思是,這是連接到遠程ssh服務器的shell

我只是困惑:

  • 如果本地端口8000(ssh tunnel)使用ssh連接將數據傳送到遠程機器,是使用相同的連接shell
  • 如果是(在這裏似乎是YES,因爲只有一個ssh連接),ssh連接如何區分這是shell命令數據還是一些隧道數據?
    這是否意味着在ssh隧道下有協議可以區分數據是什麼? (只是任意猜測)
+2

此問題與編程無關,您可能想嘗試[superuser.com](http://superuser.com/faq)。 – FrankS 2012-01-12 10:08:24

回答

1

SSH是一個不同級別的協議族。 Shell和隧道是在SSH連接之上運行的子系統。它們可以並行運行。您發送的數據通過通道(某些子系統的實例)發送,SSH數據包(包裹數據的包裝)所屬的通道在數據包本身中指定。