在 Putty 中,有三种隧道选项:
有人能解释一下它们之间有什么区别吗?
答案1
答案2
jscott 的答案是正确的,但是读完之后,我仍然不太清楚什么时候应该使用本地,什么时候应该使用远程。所以我进一步研究,找到了答案这里:
使用当地的如果您在可以从远程计算机访问的计算机上运行了一项服务,并且您想直接从本地计算机访问它。设置隧道后,您将能够使用本地主机 IP(127.0.0.1)访问该服务
使用偏僻的如果您有可从本地计算机访问的服务,并且需要将其提供给远程计算机。它会在您使用 SSH 登录的计算机上打开侦听套接字。
动态的类似于本地代理,但在客户端,它的行为类似于 SOCKS 代理。如果您需要连接需要 SOCKS 转发的软件,请使用它。
答案3
我画了一些草图
输入 ssh 隧道命令的机器(或者在你的情况下:启动带有隧道的 Putty)被称为»您的主人«。
静态(选项-L
当地的和-R
偏僻的)
- 当地的:
-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
,并将所有连接尝试转发到当地的 sourcePort
onPort
到名为 的机器上的端口forwardToHost
,可以从该connectToHost
机器访问。
- 偏僻的:
-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
,并将所有连接尝试转发到偏僻的 sourcePort
到onPort
名为 的机器上的端口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_PROXY
和tsocks
wget
需要tsocks
,因为wget
不支持代理。如果你同时使用两者,那么你是安全的(大多数情况下):script
将使用tsocks
或ALL_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
服务器上的端口。
答案4
本地服务器就是本地的
通常,这意味着本地服务器连接在您的 LAN(局域网)上,而远程服务器不在您的 LAN 上,而是通过 WAN(广域网)连接,远程服务器可能位于隔壁或下一个大陆,也可能位于同一个房间,只是在单独的网络上。