想了想 内网穿透 端口映射 都属于 端口转发 呀
主机列表
| 标识 | 名称 | IP | 网络类型 | 可访问 | 端口列表 |
|---|
local | 本机 | 192.168.1.10 | 内外网 | jump | tcp/13128 |
jump | 跳板机 | 10.0.2.20 | 内网 | server_local、server_public | tcp/280 |
server_local | 内网服务器 | 10.0.3.30 | 内网 | server_public | tcp/33306 |
server_public | 外网服务器 | 172.16.4.40 | 公网 | jump | |
转发类型
本地转发
把 服务器 上 的端口映射到 本机
1.在受限网络中访问某个服务器提供的端口、常见于只提供了本地shell,需要访问服务端其他端口
1
| ssh -L [本地监听地址 localhost]:[本地监听端口]:[服务器地址]:[服务器监听端口] [待登录主机用户名]@[待登录主机地址]
|
- 连接
跳板机 后 把 跳板机 的 280 端口映射到 本机 的 1280 端口
1
| ssh -L 1280:localhost:280 jump@10.0.2.20
|
- 连接
跳板机 后 把 内网服务器 的 33306 端口映射到 本机 的 13306 端口
1
| ssh -L 13306:10.0.3.30:33306 jump@10.0.2.20
|
远程转发
把 本机、目标 上 的端口映射到 服务器、还有个响亮的名字叫 内网穿透、端口映射
- 支付、登录回调等
- 内网的服务器通过本地代理上网
1
| ssh -R [目标地址 localhost]:[目标端口]:[服务器监听地址]:[服务器监听端口] [待登录主机用户名]@[待登录主机地址]
|
- 连接
跳板机 后 把 本机 的 13128 端口映射到 跳板机 的 23128 端口
1
| ssh -R 13128:localhost:23128 jump@10.0.2.20
|
- 连接
跳板机 后 把 本机 的 13128 端口映射到 外网服务器 的 43128 端口
1 2 3 4 5 6
| sh -R 13128:localhost:23128 jump@10.0.2.20
sh -R 23128:0.0.0.0:43128 server_public@172.16.4.40
ssh -R 13128:0.0.0.0:43128 server_public@172.16.4.40
|
动态转发
在 本机 上建立一个 socket 代理、通过此代理的数据 将通过 服务端 转发出去
- 恩 好像就
7890、20170 那种端口吧
1
| ssh -D [本地监听地址 localhost]:[本地监听端口] [待登录主机用户名]@[待登录主机地址]
|
- 将
本机 18080 端口接受到的数据通过 跳板机 转发出去
1
| ssh -D 18080 jump@10.0.2.20
|
Q&A
远程转发时无法监听全部端口
/etc/ssh/sshd_config 修改 GatewayPorts 为 yes
参考地址