首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >本地/远程/动态SSH隧道有什么区别?

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

Server Fault用户
提问于 2011-05-23 14:06:41
回答 5查看 50.1K关注 0票数 36

在Putty,有三种隧道方案:

有人能解释一下他们之间的区别吗?

EN

回答 5

Server Fault用户

回答已采纳

发布于 2011-05-23 14:22:14

特别是来自腻子文档4.23隧道事务委员会部分:

设置一个“本地”或“远程”单选按钮,取决于您是要将本地端口转发到远程目的地(“本地”),还是将远程端口转发到本地目的地(“远程”)。或者,如果希望PuTTY在本地端口上提供本地SOCKS 4/4A/5代理,则选择“Dynamic”(请注意此代理只支持TCP连接;SSH协议不支持转发UDP)。

  • 本地-将本地端口转发到远程主机。
  • 将远程端口转发到本地主机。
  • 动态--扮演SOCKS代理的角色。这需要来自连接到它的软件的特殊支持,但是目标地址是在运行时动态获得的,而不是预先固定的。
票数 29
EN

Server Fault用户

发布于 2013-05-24 10:13:23

jscott的回答是正确的,但是在阅读之后,我仍然不完全清楚我应该在什么时候使用本地语言和何时远程。因此,我做了进一步的研究,并找到了答案这里

如果在可以从远程计算机到达的计算机上运行服务,并且希望直接从本地计算机访问服务,请使用本地服务。在设置隧道之后,您将能够使用本地主机IP (127.0.0.1)访问服务。

如果您有可以从本地计算机到达的服务,并且需要使远程计算机可用,则使用remote。它在您使用SSH登录的机器上打开侦听套接字。

Dynamic就像本地的,但是在客户端它的行为就像一个SOCKS代理。如果您需要连接到期望SOCKS转发的软件,请使用它。

票数 32
EN

Server Fault用户

发布于 2021-02-12 17:57:27

我画了一些草图

输入ssh隧道命令的机器(或者在您的例子中:启动Putty )称为“您的主机”。

静态(选项-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,并将所有连接尝试转发到本地sourcePort到名为forwardToHost的机器上的onPort端口,这可以从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,并将所有连接尝试转发到远程sourcePort到名为forwardToHost的计算机上的onPort端口,这可以从您的本地计算机到达。

dynamic (选项-D)

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

袜子代理是做什么的?它接受您的所有请求,并动态地将其转发给远程主机和端口,这是原始程序所希望的(参见下面的示例)。

使用示例-D (dynamic / socks)

如果您想要隧道您的浏览器流量(例如火狐),您不仅希望访问一个网站(远程主机和端口),但在www免费冲浪。所以你需要一个动态隧道一个socks代理。

在您的计算机(主机)上,您可以:

代码语言:javascript
复制
ssh -D 5000 remotehost   # or the equivalent option "dynamic" with putty

火狐流量隧道

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

代码语言:javascript
复制
about:config

现在编辑以下值:

代码语言:javascript
复制
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

一起使用

配置文件的内容:

代码语言:javascript
复制
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代理。

代码语言:javascript
复制
tsocks thunderbird
tsocks mplayer -playlist http://bassdrive.com/bassdrive.m3u

curl

易于使用卷曲:

代码语言:javascript
复制
ALL_PROXY="socks5h://localhost:5000" curl http://blabbla.abc

或者只是

代码语言:javascript
复制
curl --proxy socks5h://localhost:5000 http://blabbla.abc

合并ALL_PROXYtsocks

wget需要tsocks,因为wget不支持代理。如果两者都做了,那么您是安全的(主要是):script将使用tsocksALL_PROXY变量:

代码语言:javascript
复制
ALL_PROXY="socks5h://localhost:5000" tsocks script

for youtube-dl

代码语言:javascript
复制
youtube-dl --proxy socks5://127.0.0.1:5000 http://blaaaa.bla

用Putty (本地前进示例)

设置它

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

连接→SSH→隧道

并使用源端口123和目标localhost:456创建一个新的本地隧道。

不要忘记单击Add。

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

票数 14
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/272754

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档