SSH 端口转发+内网穿透

时间:2022-01-20 07:07:15

用最直白的语言对本文所有内容进行定义:

端口转发(-L):用A机器(内网)登录B机器(公网), 在A机器打开端口,将收到的所有请求转发到B机器的某个端口 (在代理机上执行)

内网穿透(-R):用A机器(内网)登录B机器(公网),在B机器打开端口,将收到的所有请求转发回A机器的某个端口 (被代理机上执行)

例:端口转发

服务器A 内网IP  192.168.1.100   (不可访问外网)

服务器B 内网IP  192.168.1.101  外网IP 113.106.16.160

要求:通过连接B的外网 113.106.16.160:2222端口<映射> A的内网IP  192.168.1.100:22端口

ssh -f -N -L 代理(前台)IP:2222:被代理(后台):22 root@代理(前台)IP

ssh -f -N -L *:2222:192.168.1.100:22 root@113.106.16.160

访问代理B的2222等于访问服务器A 192.168.1.100的22口(在代理机B上执行)

场景:实用于没有对没有外网的服务器的通过端口转发访问-共享内网资源

例:内网穿透

公司服务器A 内网IP  192.168.1.100 (可访问外网)

阿里服务器B 内网IP  10.1.9.10         外网IP 113.106.16.160

要求:C 通过B的113.106.16.160:2222端口<映射>A的内网IP  192.168.1.100:22端口

ssh -f -N -R 代理(前台)IP:2222:被代理(后台):22 root@被代理(后台)IP

ssh -f -N -R *:2222:localhost:22 root@113.106.16.160 (被代理A上执行)

访问代理B的2222等于访问服务器A 192.168.1.100的22口(被代理A上执行)

场景:实用于公司内网电脑可以访问外网但不能被外网访问,在不使用VPN的情况下,内网穿透-访问内网资源

注意:进行内网穿透的时候默认只能穿透到远端服务器,远端服务器监听的是127.1的ip,想要监听公网ip的话需要打开sshd的GatewayPorts

参数:
-q 是静默执行,不提示多余信息,
-f 是后台执行,即ssh进程执行为后台进程,登录后即刻返回命令行,
-D 就是本地打算使用的转发端口
-f "sleep 30d"#30天有效 (-N 一直有效)
-C 压缩数据传输
-N 不执行脚本或命令,仅仅做端口转发 通常与-f连用
-L 将本地机(客户机)的某个端口转发到远端指定机器的指定端口
-R 将远程主机(服务器)的某个端口转发到本地端指定机器的指定端口
-g 表示允许远程主机连接转发端口

SSH全透明代理

ssh -nNTf -D localhost:26 root@113.106.16.160

代理脚本下载:http://pac.itzmx.com/ #只需要把abc.pac 的前句服务器地址改成自己的服务器和端口

安装nginx: yu -y install nginx

把abc.pac 移动到 /usr/share/nginx/html 

在client机器上设置IE代理:

SSH 端口转发+内网穿透