本地/远程/动态 SSH 隧道之间有什么区别?

本地/远程/动态 SSH 隧道之间有什么区别?

在 Putty 中,有三种隧道选项:

在此处输入图片描述

有人能解释一下它们之间有什么区别吗?

答案1

来自PuTTY 文档, 具体来说,4.23 隧道面板部分:

根据您是要将本地端口转发到远程目标(“本地”)还是将​​远程端口转发到本地目标(“远程”),设置“本地”或“远程”单选按钮之一。或者,如果您希望 PuTTY 在本地端口上提供本地 SOCKS 4/4A/5 代理,请选择“动态”(请注意,此代理仅支持 TCP 连接;SSH 协议不支持转发 UDP)。

  • 本地——将本地端口转发到远程主机。
  • 远程——将远程端口转发到本地主机。
  • 动态——充当SOCKS代理。这需要与之连接的软件的特殊支持,但是目标地址是在运行时动态获取的,而不是预先固定的。

答案2

jscott 的答案是正确的,但是读完之后,我仍然不太清楚什么时候应该使用本地,什么时候应该使用远程。所以我进一步研究,找到了答案这里

使用当地的如果您在可以从远程计算机访问的计算机上运行了一项服务,并且您想直接从本地计算机访问它。设置隧道后,您将能够使用本地主机 IP(127.0.0.1)访问该服务

使用偏僻的如果您有可从本地计算机访问的服务,并且需要将其提供给远程计算机。它会在您使用 SSH 登录的计算机上打开侦听套接字。

动态的类似于本地代理,但在客户端,它的行为类似于 SOCKS 代理。如果您需要连接需要 SOCKS 转发的软件,请使用它。

答案3

我画了一些草图

输入 ssh 隧道命令的机器(或者在你的情况下:启动带有隧道的 Putty)被称为»您的主人«

从本地启动 ssh 隧道


从远程启动 ssh 隧道

静态(选项-L 当地的-R 偏僻的

  1. 当地的:-L Specifies that the given port on the local (client) host is to be forwarded to the given host and port on the remote side.

ssh -L sourcePort:forwardToHost:onPort connectToHost意思是:使用 ssh 连接到connectToHost,并将所有连接尝试转发到当地的 sourcePortonPort到名为 的机器上的端口forwardToHost,可以从该connectToHost机器访问。

  1. 偏僻的:-R Specifies that the given port on the remote (server) host is to be forwarded to the given host and port on the local side.

ssh -R sourcePort:forwardToHost:onPort connectToHost意思是:使用 ssh 连接到connectToHost,并将所有连接尝试转发到偏僻的 sourcePortonPort名为 的机器上的端口forwardToHost,可以从您的本地机器访问该端口。

动态(选项-D

-D类似于-L(本地),但 SSH 不会转发到一个且只有一个特定的远程主机和端口,而是充当SOCKS代理到远程主机。使用隧道的程序需要支持 socks 代理。或者你需要使用一些技巧来帮助它(参见下面的示例)。

Socks 代理有什么作用?它接受您的所有请求并将其动态转发到原始程序希望的远程主机和端口(参见下面的示例)。

-D(动态/袜子)的使用示例

如果你想通过隧道传输浏览器流量(例如使用 Firefox),你可以这样做不仅想访问一个网站(远程主机和端口),还想在 www 上自由浏览。因此,您需要一个动态隧道,一个袜子代理。

在您的计算机(您的主机)上,您可以执行以下操作:

ssh -D 5000 remotehost   # or the equivalent option "dynamic" with putty

Firefox 流量通过隧道传输

为此,您可以编辑 Firefox 配置,以便浏览器使用 socks 代理。在 Firefox 地址栏中输入:

about:config

现在编辑以下值:

network.proxy.socks             string localhost
network.proxy.socks_port        integer 5000
network.proxy.socks_remote_dns  boolean true
network.proxy.type              integer 1   (0 ist default)
media.peerconnection.enabled    boolean false (true ist default)

现在,您可以浏览互联网,而陌生地方的任何人都不会知道您在做什么。

更通用:使用tsocks带有文件的应用程序/etc/tsocks.conf

配置文件的内容:

local = 192.168.1.0/255.255.255.0   # no proxy for local network
server = localhost    # proxy-server (your host)
server_type = 5       # socks5
server_port = 5000

您现在可以启动带有 tsocks 的程序,以便它使用 socks 代理。

tsocks thunderbird
tsocks mplayer -playlist http://bassdrive.com/bassdrive.m3u

卷曲

易于使用 curl:

ALL_PROXY="socks5h://localhost:5000" curl http://blabbla.abc

要不就

curl --proxy socks5h://localhost:5000 http://blabbla.abc

结合ALL_PROXYtsocks

wget需要tsocks,因为wget不支持代理。如果你同时使用两者,那么你是安全的(大多数情况下):script将使用tsocksALL_PROXY变量:

ALL_PROXY="socks5h://localhost:5000" tsocks script

对于 youtube-dl

youtube-dl --proxy socks5://127.0.0.1:5000 http://blaaaa.bla

使用 Putty 进行设置(当地的前向示例)

启动 Putty 并输入您常用的连接设置(主机名或 IP 地址)。在左侧的树中,导航至

连接 → SSH → 隧道

并创建一个新的当地的隧道与源端口123和目标端口localhost:456

不要忘记点击添加

然后导航回会议并点击节省以保留您的设置以供下次使用。现在您可以使用保存的连接登录到您的服务器,成功登录后,每次连接到123主机上的端口时,您实际上都会连接到456服务器上的端口。

使用 putty 创建正向隧道

答案4

本地服务器就是本地的

通常,这意味着本地服务器连接在您的 LAN(局域网)上,而远程服务器不在您的 LAN 上,而是通过 WAN(广域网)连接,远程服务器可能位于隔壁或下一个大陆,也可能位于同一个房间,只是在单独的网络上。

相关内容