ssh -D 选项用于动态(Dynamic)端口转发

时间:2024-07-16 19:14:41

举例实现不同ssh连接功能目录

一、功能简介

        -D 支持 SOCKS5 协议,可以同时转发 TCP 和 UDP 报文

二、原理介绍

        假设拥有三台主机,具体环境如下:

        1. 主机 A:本地主机,即 SSH 客户 所在的主机,IP:192.168.0.100

        2. 主机 B:远程主机,即 SSH 服务 所在的主机,IP:134.201.250.100

        3. 主机 C:想要访问的目的主机,提供了web服务,IP:192.168.1.111

        AB互通,BC互通,AC不通

(举例环境,A是家里内网地址,B是有公网IP的公司主机,C是公司局域网地址)

关于-D选项的作用

 ssh -D 当前A主机侦听端口 B主机用户名@B主机ip地址 -p B主机ssh的侦听端口

-D portA 或 -D *:portA 表示从任意主机发往主机 A 的端口 X 的流量,都通过主机 B,发往报文中目标主机的目标端口。

-D localhost:portA 表示只有从主机 A 发往主机 A 的portA端口 的流量,才通过主机 B,发往报文中目标主机的目标端口。

-D hostD:portA 表示只有从主机 D 发往主机 A 的portA端口 的流量,才通过主机 B,发往报文中目标主机的目标端口。

额外的参数,建议根据需求尽量使用

-C        压缩传输

-f          后台执行

-N        不执行远程命令。这个参数告诉SSH不要执行远程shell或远程命令。通常与端口转发一起使用,以便可以在本地机器*问远程服务器的端口,而不实际上登录到远程服务器

-g        允许远程端口转发。这个参数允许SSH进行端口转发,并将指定的本地端口映射到远程主机的端口

-T        启用透明隧道。这个参数通常与端口转发一起使用,它使得SSH将指定的本地端口映射到远程主机的端口,并且流量在本地机器和远程主机之间是透明的

、举例

        在A主机上执行下列命令,向B主机发起ssh连接

ssh -CfNgT -D 8888 user@134.201.250.100 -p 22

        连接成功后,在主机 A 上设置 Socks5 代理(火狐浏览器为例)

         假设portA是8888端口,建议设置7000以上端口,从而尽量保证不影响正常程序运行

        在主机 A 的火狐浏览器上就可以访问到主机 C 提供的web服务了

        从本地浏览器,到portA使用socks5协议,从portA到portB是ssh协议,从portB到portC是http或https协议。