正如标题所说,我真的不明白他们之间的区别。 例如,如果我通过SSH连接到特定的服务器而无需通道,则获得与隧道连接相同的shell。
如果您将隧道添加到SSH会话中,则会在同一encryption连接上为隧道创build额外的数据stream。 您也可以创build多个通道或不启动交互式会话(使用-N参数)。 所以,基本上,没有真正的区别,只是使用encryption连接的方法不同。
SSH实际上是一种通用的安全通信机制,可以通过不安全的底层通道传输任意数据。 默认情况下,这个数据是一个shell会话(即你的本地terminal连接到在远程系统上运行的shell),但是有不同types的数据可以被传输。
一种这样的types是stream套接字连接(例如,TCP连接),其被称为隧道。 SSH客户端侦听TCP端口并通过安全通道传输到该端口的所有连接,并退出远程系统的连接。
默认情况下,当你设置一个隧道时,你仍然会得到一个shell,即SSH客户端通过同一个连接(隧道和shell)传输两种types的数据。 您可以使用-N参数禁用shell。