2012-01-12 78 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数据包(包裹数据的包装)所属的通道在数据包本身中指定。