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