举例实现不同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协议。