精华内容
下载资源
问答
  • 本文为大家详细介绍了SSH端口转发,本地端口转发,远程端口转发,动态端口转发等相关知识
  • 通过本文的介绍,读者可以从中了解到如何应用 SSH 端口转发机制来解决日常工作 / 生活中的一些问题。学会在非安全环境下使用端口转发来加密网络应用,保护个人隐私以及重要商业信息。同时也能够用此技术解决工作中...

    第一部分 概述

    当你在咖啡馆享受免费 WiFi 的时候,有没有想到可能有人正在窃取你的密码及隐私信息?当你发现实验室的防火墙阻止了你的网络应用端口,是不是有苦难言?来看看 SSH 的端口转发功能能给我们带来什么好处吧!

    端口转发概述

    让我们先来了解一下端口转发的概念吧。我们知道,SSH 会自动加密和解密所有 SSH 客户端与服务端之间的网络数据。但是,SSH 还同时提供了一个非常有用的功能,这就是端口转发。它能够将其他 TCP 端口的网络数据通过 SSH 链接来转发,并且自动提供了相应的加密及解密服务。这一过程有时也被叫做“隧道”(tunneling),这是因为 SSH 为其他 TCP 链接提供了一个安全的通道来进行传输而得名。例如,Telnet,SMTP,LDAP 这些 TCP 应用均能够从中得益,避免了用户名,密码以及隐私信息的明文传输。而与此同时,如果您工作环境中的防火墙限制了一些网络端口的使用,但是允许 SSH 的连接,那么也是能够通过将 TCP 端口转发来使用 SSH 进行通讯。总的来说 SSH 端口转发能够提供两大功能:

    1. 加密 SSH Client 端至 SSH Server 端之间的通讯数据。
    2. 突破防火墙的限制完成一些之前无法建立的 TCP 连接。
    图 1. SSH 端口转发
    SSH 端口转发

    如上图所示,使用了端口转发之后,TCP 端口 A 与 B 之间现在并不直接通讯,而是转发到了 SSH 客户端及服务端来通讯,从而自动实现了数据加密并同时绕过了防火墙的限制。

    第二部分 本地转发与远程转发

    本地转发实例分析

    我们先来看第一个例子,在实验室里有一台 LDAP 服务器(LdapServerHost),但是限制了只有本机上部署的应用才能直接连接此 LDAP 服务器。如果我们由于调试或者测试的需要想临时从远程机器(LdapClientHost)直接连接到这个 LDAP 服务器 , 有什么方法能够实现呢?

    答案无疑是本地端口转发了,它的命令格式是:

    ssh -L <local port>:<remote host>:<remote port> <SSH hostname>

    在 LdapClientHost 上执行如下命令即可建立一个 SSH 的本地端口转发,例如:

    $ ssh -L 7001:localhost:389 LdapServerHost
    图 2. 本地端口转发
    本地端口转发

    这里需要注意的是本例中我们选择了 7001 端口作为本地的监听端口,在选择端口号时要注意非管理员帐号是无权绑定 1-1023 端口的,所以一般是选用一个 1024-65535 之间的并且尚未使用的端口号即可。

    然后我们可以将远程机器(LdapClientHost)上的应用直接配置到本机的 7001 端口上(而不是 LDAP 服务器的 389 端口上)。之后的数据流将会是下面这个样子:

    • 我们在 LdapClientHost 上的应用将数据发送到本机的 7001 端口上,
    • 而本机的 SSH Client 会将 7001 端口收到的数据加密并转发到 LdapServertHost 的 SSH Server 上。
    • SSH Server 会解密收到的数据并将之转发到监听的 LDAP 389 端口上,
    • 最后再将从 LDAP 返回的数据原路返回以完成整个流程。

    我们可以看到,这整个流程应用并没有直接连接 LDAP 服务器,而是连接到了本地的一个监听端口,但是 SSH 端口转发完成了剩下的所有事情,加密,转发,解密,通讯。

    这里有几个地方需要注意:

    1. SSH 端口转发是通过 SSH 连接建立起来的,我们必须保持这个 SSH 连接以使端口转发保持生效。一旦关闭了此连接,相应的端口转发也会随之关闭。
    2. 我们只能在建立 SSH 连接的同时创建端口转发,而不能给一个已经存在的 SSH 连接增加端口转发。
    3. 你可能会疑惑上面命令中的 <remote host> 为什么用 localhost,它指向的是哪台机器呢?在本例中,它指向 LdapServertHost 。我们为什么用 localhost 而不是 IP 地址或者主机名呢?其实这个取决于我们之前是如何限制 LDAP 只有本机才能访问。如果只允许 lookback 接口访问的话,那么自然就只有 localhost 或者 IP 为 127.0.0.1 才能访问了,而不能用真实 IP 或者主机名。
    4. 命令中的 <remote host> 和 <SSH hostname> 必须是同一台机器么?其实是不一定的,它们可以是两台不同的机器。我们在后面的例子里会详细阐述这点。
    5. 好了,我们已经在 LdapClientHost 建立了端口转发,那么这个端口转发可以被其他机器使用么?比如能否新增加一台 LdapClientHost2 来直接连接 LdapClientHost 的 7001 端口?答案是不行的,在主流 SSH 实现中,本地端口转发绑定的是 lookback 接口,这意味着只有 localhost 或者 127.0.0.1 才能使用本机的端口转发 , 其他机器发起的连接只会得到“ connection refused. ”。好在 SSH 同时提供了 GatewayPorts 关键字,我们可以通过指定它与其他机器共享这个本地端口转发。
      ssh -g -L <local port>:<remote host>:<remote port> <SSH hostname>

    远程转发实例分析

    我们来看第二个例子,这次假设由于网络或防火墙的原因我们不能用 SSH 直接从 LdapClientHost 连接到 LDAP 服务器(LdapServertHost),但是反向连接却是被允许的。那此时我们的选择自然就是远程端口转发了。

    它的命令格式是:

    ssh -R <local port>:<remote host>:<remote port> <SSH hostname>

    例如在 LDAP 服务器(LdapServertHost)端执行如下命令:

    $ ssh -R 7001:localhost:389 LdapClientHost
    图 3. 远程端口转发
    远程端口转发

    和本地端口转发相比,这次的图里,SSH Server 和 SSH Client 的位置对调了一下,但是数据流依然是一样的。我们在 LdapClientHost 上的应用将数据发送到本机的 7001 端口上,而本机的 SSH Server 会将 7001 端口收到的数据加密并转发到 LdapServertHost 的 SSH Client 上。 SSH Client 会解密收到的数据并将之转发到监听的 LDAP 389 端口上,最后再将从 LDAP 返回的数据原路返回以完成整个流程。

    看到这里,你是不是会有点糊涂了么?为什么叫本地转发,而有时又叫远程转发?这两者有什么区别?

    本地转发与远程转发的对比与分析

    不错,SSH Server,SSH Client,LdapServertHost,LdapClientHost,本地转发,远程转发,这么多的名词的确容易让人糊涂。让我们来分析一下其中的结构吧。首先,SSH 端口转发自然需要 SSH 连接,而 SSH 连接是有方向的,从 SSH Client 到 SSH Server 。而我们的应用也是有方向的,比如需要连接 LDAP Server 时,LDAP Server 自然就是 Server 端,我们应用连接的方向也是从应用的 Client 端连接到应用的 Server 端。如果这两个连接的方向一致,那我们就说它是本地转发。而如果两个方向不一致,我们就说它是远程转发。

    我们可以回忆上面的两个例子来做个对照。

    本地转发时:

    LdapClientHost 同时是应用的客户端,也是 SSH Client,这两个连接都从它指向 LdapServertHost(既是 LDAP 服务端,也是 SSH Server)。

    远程转发时:

    LdapClientHost 是应用的客户端,但却是 SSH Server ;而 LdapServertHost 是 LDAP 的服务端,但却是 SSH Client 。这样两个连接的方向刚好相反。

    另一个方便记忆的方法是,Server 端的端口都是预定义的固定端口(SSH Server 的端口 22,LDAP 的端口 389),而 Client 端的端口都是动态可供我们选择的端口(如上述例子中选用的 7001 端口)。如果 Server 端的两个端口都在同一台机器,Client 端的两个端口都在另一台机器上,那么这就是本地连接;如果这四个端口交叉分布在两个机器上,每台机器各有一个 Server 端端口,一个 Client 端端口,那就是远程连接。

    弄清楚了两者的区别之后,再来看看两者的相同之处。如果你所在的环境下,既允许 LdapClientHost 发起 SSH 连接到 LdapServerHost,也允许 LdapServerHost 发起 SSH 连接到 LdapClientHost 。那么这时我们选择本地转发或远程转发都是可以的,能完成一样的功能。

    接着让我们来看个进阶版的端口转发。我们之前涉及到的各种连接 / 转发都只涉及到了两台机器,还记得我们在本地转发中提到的一个问题么?本地转发命令中的 <remote host> 和 <SSH hostname> 可以是不同的机器么?

    ssh -L <local port>:<remote host>:<remote port> <SSH hostname>

    答案是可以的!让我们来看一个涉及到四台机器 (A,B,C,D) 的例子。

    图 4. 多主机转发应用
    多主机转发应用

    在 SSH Client(C) 执行下列命令来建立 SSH 连接以及端口转发:

    $ ssh -g -L 7001:<B>:389 <D>

    然后在我们的应用客户端(A)上配置连接机器(C )的 7001 端口即可。注意我们在命令中指定了“ -g ”参数以保证机器(A)能够使用机器(C)建立的本地端口转发。而另一个值得注意的地方是,在上述连接中,(A)<-> (C) 以及 (B)<->(D) 之间的连接并不是安全连接,它们之间没有经过 SSH 的加密及解密。如果他们之间的网络并不是值得信赖的网络连接,我们就需要谨慎使用这种连接方式了。

    第三部分 其他类型的转发

    动态转发实例分析

    恩,动态转发,听上去很酷。当你看到这里时,有没有想过我们已经讨论过了本地转发,远程转发,但是前提都是要求有一个固定的应用服务端的端口号,例如前面例子中的 LDAP 服务端的 389 端口。那如果没有这个端口号怎么办?等等,什么样的应用会没有这个端口号呢?嗯,比如说用浏览器进行 Web 浏览,比如说 MSN 等等。

    当我们在一个不安全的 WiFi 环境下上网,用 SSH 动态转发来保护我们的网页浏览及 MSN 信息无疑是十分必要的。让我们先来看一下动态转发的命令格式:

    $ ssh -D <local port> <SSH Server>

    例如:

    $ ssh -D 7001 <SSH Server>
    图 5. 动态端口转发
    动态端口转发

    似乎很简单,我们依然选择了 7001 作为本地的端口号,其实在这里 SSH 是创建了一个 SOCKS 代理服务。来看看帮助文档中对 -D 参数的描述:

    -D port 
     This works by allocating a socket to listen to port on the local 
     side, and whenever a connection is made to this port, the con- 
     nection is forwarded over the secure channel, and the applica- 
     tion protocol is then used to determine where to connect to from 
     the remote machine.  Currently the SOCKS4 and SOCKS5 protocols 
     are supported, and ssh will act as a SOCKS server.  Only root 
     can forward privileged ports.  Dynamic port forwardings can also 
     be specified in the configuration file.

    之后的使用就简单了,我们可以直接使用 localhost:7001 来作为正常的 SOCKS 代理来使用,直接在浏览器或 MSN 上设置即可。在 SSH Client 端无法访问的网站现在也都可以正常浏览。而这里需要值得注意的是,此时 SSH 所包护的范围只包括从浏览器端(SSH Client 端)到 SSH Server 端的连接,并不包含从 SSH Server 端 到目标网站的连接。如果后半截连接的安全不能得到充分的保证的话,这种方式仍不是合适的解决方案。

    X 协议转发实例分析

    好了,让我们来看最后一个例子 - X 协议转发。

    我们日常工作当中,可能会经常会远程登录到 Linux/Unix/Solaris/HP 等机器上去做一些开发或者维护,也经常需要以 GUI 方式运行一些程序,比如要求图形化界面来安装 DB2/WebSphere 等等。这时候通常有两种选择来实现:VNC 或者 X 窗口,让我们来看看后者。

    使用 X 窗口通常需要分别安装:X Client 和 X Server 。在本例中我们的 X Client 就是所访问的远程 Linux/Unix/Solaris/HP,而我们的 X Server 则是发起访问的本地机器(例如你面前正在使用的笔记本或台式机)。把 X Client 端的 X 窗口显示在 X Server 端需要先行在 X Client 端指定 X Server 的位置,命令格式如下:

    export DISPLAY=<X Server IP>:<display #>.<virtual #>

    例如:

    export DISPLAY=myDesktop:1.0

    然后直接运行 X 应用即可,X 窗口就会自动在我们的本地端打开。

    一切运行正常,但是,这时候 IT 部门突然在远程 Linux/Unix/Solaris/HP 前面加了一道防火墙。非常不幸的是,X 协议并不在允许通过的列表之内。怎么办?只能使用 VNC 了么?不,其实只要使用了 SSH 端口转发即可通过,同时也对 X 通讯数据做了加密,真是一举两得。(当然,使用此方法前最好先咨询相关 IT 部门是否符合相应的安全条例,以免造成违规操作。)

    建立命令也很简单,直接从本地机器(X Server 端)发起一个如下的 SSH 连接即可:

    $ ssh -X <SSH Server>
    图 5. X 转发
    X 转发

    建立连接之后就可以直接运行远程的 X 应用。注意建立 X 转发之后会自动设置 DISPLAY 环境变量,通常会被设置成localhost:10.0,我们无需也不应该在连接之后再进行修改此环境变量。

    一个比较常见的场景是,我们的本地机器是 Windows 操作系统,这时可以选择开源的 XMing 来作为我们的 XServer,而 SSH Client 则可以任意选择了,例如 PuTTY,Cygwin 均可以配置 访问 SSH 的同时建立 X 转发。

    第四部分 总结

    至此,我们已经完成了本地端口转发,远程端口转发,动态端口转发以及 X 转发的介绍。回顾起来,总的思路是通过将 TCP 连接转发到 SSH 通道上以解决数据加密以及突破防火墙的种种限制。对一些已知端口号的应用,例如 Telnet/LDAP/SMTP,我们可以使用本地端口转发或者远程端口转发来达到目的。动态端口转发则可以实现 SOCKS 代理从而加密以及突破防火墙对 Web 浏览的限制。对于 X 应用,无疑是 X 转发最为适用了。虽然每一部分我们都只是简单的介绍了一下,但如果能灵活应用这些技巧,相信对我们的日常生活 / 工作也是会有所帮助的。

    展开全文
  • 文章目录网络拓扑图SSH本地端口转发桌面工作站访问实验室机器(免登录跳板机)实验室机器访问外网(本地转发)SSH远程端口转发SSH动态端口转发 网络拓扑图 为了方便讲解命令和原理,假想了一个常见的网络拓扑场景,主要...

    网络拓扑图

    为了方便讲解命令和原理,假想了一个常见的网络拓扑场景,主要包括公司网络场景以及家庭网络场景。公司网络场景中,办公桌面上的Windows工作站可以通过代理服务器访问外网,公司实验室网络由跳板机以及跳板机后面的私有局域网构成。家庭网络场景则由路由器以及路由器后面的机器组成。

    主要目的是通过各种类型的端口转发机制,实现设备之间的相互访问以及对Internet的访问。对端口转发熟悉的同学,看下拓扑图基本上也就明白了。

    在这里插入图片描述

    SSH本地端口转发

    桌面工作站访问实验室机器(免登录跳板机)

    $ ssh -f -N -L 22:192.168.42.200: $user@jump-pub-ip
    -f表示让ssh进入后台执行,
    -N表示不要执行远程命令,对于端口转发十分有用,
    -L指示转发地址,意思是当访问localhost的22端口时,
    则将访问发送给跳板机(jump-pub-ip),
    由跳板机转发给192.168.42.200的22端口,从而实现SSH登录。

    $ ssh -p 22 $user@localhost

    实验室机器访问外网(本地转发)

    $ ssh -f -N -L 19192:proxy-ip:9000 $user@192.168.42.1
    -f表示让ssh进入后台执行,-N表示不要执行远程命令,对于端口转发十分有用,
    -L指示转发地址,意思是当访问localhost的19192端口时,则将访问发送给跳板机(192.168.42.1),
    由跳板机转发给proxy-ip的9000端口。

    $ export http_proxy=localhost:19192; export https_proxy=$http_proxy; export ftp_proxy=$http_proxy
    $ cd /tmp/; wget www.baidu.com
    设定好环境变量后,即可以访问外网;可以使用wget进行测试。

    SSH远程端口转发

    路由器端口转发(本质上是远程转发)
    Router Settings: Port Forwarding: 3022->192.168.1.24:22
    就是将访问路由器3022端口的通信请求
    全部转发到192.168.1.24的22端口,交由1.24处理。
    这样外网的设备就可以通过SSH访问家里局域网中的电脑了。

    SSH动态端口转发

    占位符

    展开全文
  • 通过SSH使用SOCKS进行动态端口转发,可能是连接到远程主机的最简单,最便宜的安全方法。 注意,是连接到远程主机的办法。如果没有没有长城之外的远程主机,就没有办法叫做大杀器了。 此方法允许客户端计算机上的应用...

    通过SSH使用SOCKS进行动态端口转发,可能是连接到远程主机的最简单,最便宜的安全方法。注意,是连接到远程主机的办法。如果没有没有长城之外的远程主机,就没有办法叫做利器了。

    此方法允许客户端计算机上的应用程序向本地端口发出请求,然后将请求转发到远程主机,远程主机处理请求并将数据返回给客户端。本地有一个SOCKS服务器,它首先处理请求,然后将它们加密转发到远程计算机。因此,基于SSH的动态端口转发是一个VPN的简单替代方案。

    为什么有人需要这个动态转发? 有两个主要原因。 首先,如果您使用的是公共的,非安全的,不受信任的,未加密的网络(例如在当地的咖啡店),您可以使用此方法安全地连接到远程主机并加密网络流量,从而保护您的数据和 隐私。 其次,需要绕过本地网络限制和监控。 这里的一个很好的例子是规避网上冲浪限制。 在大多数情况下,通过端口80检查tcp/ip数据包。通过SSH使用动态端口转发,我们通过不同的端口传输http数据,而且所有http请求/响应都通过ssh加密,所以这些数据包无法被检查或过滤。

    好了,下面看看怎么来安装动态端口转发加密访问。

    1 服务器端安装

    显然,这个需要服务器在长城之外。
    需要远程主机来接收和处理来自客户端的请求。 任何计算机或设备都可以是远程主机,只要它运行ssh即可。 在这方面,任何Linux系统都是理想选择。
    查看是否安装了ssh。如果没有的话,需要进行安装并启动(略)。

     ps -ef|grep ssh
    

    确认ssh安装与否

    2 客户端安装

    2.1 Linux客户端安装

    如果客户端是Linux机器,几乎不需要设置任何东西。 用以下命令连接到远程主机即可:
    ssh -D port_number user_name@remote_host
    (例如:ssh -D 8080 username@remote-server)

    然后剩下的唯一事情就是将应用程序配置为使用SOCKS。 以下面的Firefox设置为例(参考2.2Step 7)。

    2.2 Windows客户端安装

    如果客户端是Windows,则必须先安装ssh客户端。 PuTTY是Windows的一个很好的免费的ssh客户端。

    Step 1 : 下载PuTTY

    Step 2 : 打开PuTTY并输入服务器端的IP地址或域名。 将端口保留为默认端口22,并在“已保存的会话”下为该连接指定名称,然后单击“save”保存。
    在这里插入图片描述
    Step3:单击“Connection”下的“SSH”,确保“SSH protocol version”设置为2。2也是默认值,因为1已经是不安全的了。
    在这里插入图片描述
    Step 4 : 在SSH子栏目下面的 “Auth” 项中,选择 “Allow agent forwarding”。
    在这里插入图片描述
    Step 5:在“Tunnels”栏目“Source Port”字段中输入端口,本例子设为8080,选择“Dynamic”单选按钮并单击“Add”按钮。
    在这里插入图片描述
    Step 6: 单击左上角的“Session”返回第一个屏幕并保存设置。 点击“Open”按钮,进入远程服务器,并输入用户名和Linux密码。

    在这里插入图片描述

    Step7:现在您已准备好配置应用程序以使用SOCKS的动态端口转发。 接下来我们将配置Firefox。 打开Firebox的“Options”设置页,到页面底部的“NetWork Settings”,点击“Setting”,点击“连接”下的“设置”按钮。 在弹出的窗口中选择“手动代理配置”,输入localhost作为“SOCKS主机”和端口号(本练习为8080)。 选择“SOCKS v5”单选按钮,然后在“No Proxy for”框中输入"localhost, 127.0.0.1"
    在这里插入图片描述
    现在,当您使用Firefox浏览互联网时,所有流量将被定向到端口8080上的本地SOCKS代理服务器,然后数据包将被加密并通过端口22上的ssh转发到远程主机(您可以随时更改默认ssh 端口到任何其他端口)。 重要的是要注意,远程主机将解密来自客户端的数据包,然后在没有加密的情况下在端口80上发出请求。

    好了,可以开始享受你非凡的网上之旅了^_^

    2019/3/17补充:
    在firefox的Connection Settings页面上,一定要选上proxy DNS when using SOCKS v5,不然谷歌,gmail访问不了,油管的视频也播放不了。
    在这里插入图片描述


    参考1:Dynamic Port Forwarding with SOCKS over SSH. 2011
    参考2:Dynamic Port Forwarding with SOCKS over SSH. 2008

    展开全文
  • 在别人编译的 live.2013.11.15_VS2012 代码基础上修改代理服务那模块,将代理端口参数化,实现 流媒体代理固定端口为 554或8554的限制。
  • 工作方式是,ssh client监听指定的TCP端口,将访问该端口的连接通过安全通道转发给ssh server,然后ssh server建立一个到host:hostport的连接,完成转发。 也就是监听端口在ssh cient上,ssh server为转发路径上的...

    SSH本地转发,远程转发和动态端口转发的区别

    -L 本地转发(LocalForward)

    场景:在本地机器和中间机器之间建立一条通信隧道,将本地机器某个端口的流量通过这条隧道转发到远程机器的端口。使用的场景是,本地机器不能访问远程机器,但中间机器可以访问远程机器,并且本地机器可以ssh登录到中间机器。

    本地转发的相关参数:

    -L [bind_address:]port:host:hostport
    -L [bind_address:]port:remote_socket
    -L local_socket:host:hostport
    -L local_socket:remote_socket

    例子:

    ssh -L HostA:PortA:HostC:PortC root@HostB

    本地机器为HostA,本地机器可能有多个网卡,所以要绑定本地机器的ip和port。访问本地机器HostA:PortA的流量,会通过中间机器转发到远程机器HostC:PortC上。在这里,需要ssh登录到HostB。

    • 映射远程数据库 dbhost:3306 到本地 localhost:3306

    远程数据库服务器dbhost需要通过跳板机登录,跳板机jumphost只能通过私钥ssh登录.如果要在本地访问远程数据库,可以将dbhost:3306映射到localhost:3306,然后就可以通过 localhost:3306 直接访问数据库。

    ssh -i xxxx.pem usr@jumphost -L :3306:dbhost:3306 -fN
    -i 指定私钥文件
    -f 后台运行
    -N 不执行远程命令,只做端口转发

    如果跳板机也需要代理服务器才能登录,那么我们可以使用 ssh ProxyCommand 设置访问跳板机的代理服务器,假设代理服务器地址为127.0.0.1:1086。

    ssh config的配置如下:

    Host jumphost
      HostName xx.xx.xx.xx
      User xxxx
      IdentityFile ~/.ssh/xxx.pem
      ProxyCommand=nc -X 5 -x 127.0.0.1:1086 %h %p
    

    相关的配置

    GatewayPorts
           Specifies whether remote hosts are allowed to connect to local forwarded ports.  By default, ssh(1) binds local port forwardings to the loopback address.  This prevents other remote hosts from connecting to forwarded
           ports.  GatewayPorts can be used to specify that ssh should bind local port forwardings to the wildcard address, thus allowing remote hosts to connect to forwarded ports.  The argument must be “yes” or “no”.  The
           default is “no”.
    

    -R 远程代理(RemoteForward)

    场景:在本地机器和远程机器之间建立一条通信隧道,远程机器某个端口的流量会通过通信隧道转发到本地机器能访问到的机器上。使用的场景是,两个远程机器不能相互访问,但本地机器可以访问这两个远程机器。

    远程代理的相关参数:

    -R [bind_address:]port:host:hostport
    -R [bind_address:]port:local_socket
    -R remote_socket:host:hostport
    -R remote_socket:local_socket
    -R [bind_address:]port

    例子:

    ssh -R HostB:PortB:HostD:PortD root@HostB

    本地机器为HostA,在本地机器通过ssh登录远程机器HostB,建立一条通信隧道,访问远程机器HostB:PortB的流量会通过HostA转发到HostD:PortD

    -D 动态端口转发

    场景:在本地机器和远程机器之间建立一条通信隧道,本地机器特定端口的流量会通过远程机器转发出去。动态端口转发并没有指定目的地,而正向代理的目的地在建立ssh通道时就确定。

    动态端口转发的相关参数:

    -D [bind_address:]port

    例子:

    ssh -D HostA:PortA root@HostB

    本地机器为HostA,在本地机器上ssh登录到HostB,建立通信隧道。本地机器的HostA:PortA成为代理端口,流量通过HostB转发出去,流量到达目的机器后,目的机器看到流量的源地址为HostB。

    总结

    • 本地机器不能访问远程机器,中间机器可以访问远程机器,本地机器可以ssh登录到中间机器,这种情况下可以使用本地转发。

    • 两个远程机器不能相互访问,但本地机器可以访问这两个远程机器,这个情况用远程转发。

    • 本地机器可以ssh登录到远程机器,如果想让远程机器变成SOCK4和SOCK5代理服务器,这种情况可以使用动态端口转发。

    展开全文
  • 配置文件-->代理服务器:输入地址(127.0.0.1),端口(16202),协议(SOCKS 版本5) 1.2:代理规则配置 配置文件-->代理规则:输入目标主机(支持通配符eg: *.google.com), 动作(PROXY SOCKS5 127.0.0.1:16202) 2:...
  • SSH端口转发 SSH 会自动加密和解密所有 SSH 客户端与服务端之间的网络数据。但是, SSH还能够将其他 TCP 端口的网络数据通过 SSH 链接来转发,并且自动提供了相应的加密及解密服务。这一过程也被叫做“隧道”( ...
  • SSH 端口转发

    2017-08-09 18:31:51
    SSH 端口转发也被叫做SSH隧道(ssh tunnel),因为它们都是通过SSH登陆之后,在SSH客户端与SSH服务端...主要有3中模式,本地端口转发(Local Port Forwarding),远程端口转发(Remote Port Forwarding)以及动态端口转发
  • SSH端口转发实验

    2018-06-04 16:09:26
    一、SSH端口转发相关概念二、实验:模拟SSH本地端口转发三、实验:模拟SSH远程端口转发四、实验:模拟SSH动态端口转发 一、SSH端口转发相关概念在上一节我们知道,SSH会自动加密和解密所有SSH客户端和服务器之间的...
  • 玩转SSH端口转发

    2017-04-24 17:05:00
    SSH有三种端口转发模式,本地端口转发(Local Port Forwarding),远程端口转发(Local Port Forwarding)以及动态端口转发(Dynamic Port Forwarding)。对于本地/远程端口转发,两者的方向恰好相反。动态端口转发则可以...
  • 端口转发

    2017-01-11 22:43:17
    windows和linux系统的端口转发方法介绍
  • 运行中的docker如何动态更改端口转发 问题起因:mysql数据库 端口没有在映射时没有做端口映射先想在宿主机使用该数据库 查看 docker run 的-p命令 就是端口转发,就想在宿主机添加一个端口转发规则。 a, 获取...
  • SSH端口转发

    2017-09-12 20:58:11
    SSH端口转发 SSH端口转发 关于SSH端口转发 原理 两大应用 实验前准备 关闭防火墙 关闭SElinux策略 检查是否已安装Telnet服务 安装Telnet服务 启动Telnet服务 本地端口转发 建立本地端口转发 确认本地端口转发已经...
  • 在windows上用netsh动态配置端口转发

    千次阅读 2017-04-08 10:13:50
    VirtualBox提供了端口转发的功能,可以将主机中的端口转发至指定IP的虚拟机中的端口,支持TCP协议和UDP协议。但有一个缺点:需要重启虚拟主机才生效。   其实在Windows中,如果想做端口转发
  • ssh 端口转发

    千次阅读 2015-12-07 17:54:48
    正向代理 ssh -L 8000:host-d.prod.mycompany.com:8888 oracle@host-c.prod.mycompany.com -N 反向代理: ssh -R 8888:localhosthost-b.office.mycompany....动态端口转发 ssh -D 8888 u
  • 0x00First ... 目前利用SSH隧道(SSH tunneling)进行端口转发,有三种类型:本地端口转发、远程端口转发、动态端口转发。 1、本地端口转发  在ip1的客户端执行如下命令:  SSH -CfN -L 0.0.0.0:p...
  • SSH有三种端口转发模式,本地端口转发(Local Port Forwarding),远程端口转发(Remote Port Forwarding)以及动态端口转发(Dynamic Port Forwarding)。对于本地/远程端口转发,两者的方向恰好相反。动态端口转发则可以...
  • Linux下的SSH端口转发

    千次阅读 2016-08-26 16:43:04
    通常情况下两个不同的网络之间总会开放某...端口转发可以分为三种,正向端口转发,反向端口转发和动态端口转发。 为了演示这三种端口转发方式的用法我们先假设存在有2个网域Office和Prod,在网域Office中有两个主机A和
  • 端口映射与端口转发

    2020-03-04 10:31:46
    端口转发&端口映射 01 什么是端口转发 端口转发(Port forwarding),有时被叫做隧道,是安全壳(SSH)为网络安全通信使用的一种方法。端口转发是转发一个网络端口从一个网络节点到另一个网络节点的行为,其使一...
  • ssh实现端口转发

    2019-06-14 15:50:53
    ssh实现端口转发环境及目标使用ssh实现 环境及目标 环境 机器manager1:192.168.0.41 机器manager2:192.168.0.42 web项目部署在manager1上,端口为8080。 目标 将192.168.0.42的80端口转发到192.168.0.41的8080端口...
  • ros端口转发

    2020-07-28 22:39:16
    一、端口转发 静态配置: [admin@MikroTik] > /ip firewall nat add chain=dstnat dst-address=x.x.x.x(静态公网IP) protocol=tcp dst-port=22 action=dst-nat to-addresses=x.x.x.x(本地静态内网IP) to-...
  • 干货|内网渗透之端口转发&端口映射

    千次阅读 2019-11-09 17:31:29
    端口转发 端口转发,有时被叫做隧道,是安全壳为网络安全通信使用的一种方法。端口转发是转发一个网络端口从一个网络端口转发到另一个网络端口或从一个网络节点转发到另一个网络节点的行为,其使一个外部用户从外部...
  • 实战 SSH 端口转发

    千次阅读 2014-06-11 20:52:18
    来看看 SSH 的端口转发功能能给我们带来什么好处吧! 端口转发概述 让我们先来了解一下端口转发的概念吧。我们知道,SSH 会自动加密和解密所有 SSH 客户端与服务端之间的网络数据。但是,SSH 还同时提供了一个...
  • 使用SSH做端口转发以及反向隧道

    千次阅读 2019-06-01 22:30:26
    目录 SSH做本地端口转发 SSH做反向隧道(远程端口转发) 用autossh建立稳定隧道 SSH开启端口转发需要修改 /etc/ssh/sshd_config配置文件,将 GatewayPorts修改为yes ...-R 将远程主机(服务器)的某个...-D 动态端口转...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 87,887
精华内容 35,154
关键字:

动态端口转发