网站首页 > 编程文章 正文
摘要: 隧道 ssh -L 命令总结 和 windows端口转发配置
关键词: 隧道、ssh -L 、端口转发、网络映射
整体说明
最近在项目中,因为内网的安全密级比较高,只能有一台机器连接内网数据库,推送数据,但是我又需要使用本地数据库连接工具查看对方对方数据库更新情况,所以用到了端口转发,大致步骤如下:
一、隧道 ssh -L 命令总结
1.1、 核心功能
- 加密隧道:所有流量通过 SSH 加密传输,避免明文暴露
- 本地端口代理:将本地端口的访问请求转发到远程网络的指定地址和端口
- 绕过防火墙/NAT:通过 SSH 跳板机访问原本无法直接连接的内部服务(如数据库、Web API)
1.2、命令语法
ssh -L [本地地址:]本地端口:目标地址:目标端口 用户名@SSH服务器
- 参数说明: 本地地址(可选):默认 127.0.0.1(仅本机访问),设为 0.0.0.0 可允许其他设备访问。 本地端口:本地监听的端口(如 3306)。 目标地址:目标端口:流量最终到达的目标地址(从 SSH 服务器的视角解析)。 用户名@SSH服务器:SSH 跳板机的登录信息。
1.3、典型使用场景
1.3.1、场景1:访问内网数据库
ssh -L 5326:db.internal:15236 user@jump.host
效果:本地访问 localhost:5236 → 流量通过 jump.host 转发到内网 db.internal:15236。
用途:安全连接远程 MySQL、PostgreSQL 等数据库
图形展示:
执行效果结果:
说明:执行的时候需要输入 jump.host 对应user的服务器密码
1.3.2、场景 2:绕过防火墙限制
ssh -L 8080:blocked-website.com:80 user@vps.public
效果:本地访问 localhost:8080 → 流量通过 vps.public 访问被防火墙屏蔽的网站。
1.3.3、场景 3:调试远程服务
ssh -L 5000:localhost:8000 user@remote-server
效果:本地访问 localhost:5000 → 流量转发到 remote-server 本地的 8000 端口。
用途:调试远程服务器上运行的 Web 服务(如 Flask/Django)
1.4、高级用法
1.4.1、多级转发
# 本地 -> 跳板机1 -> 跳板机2 -> 目标服务
ssh -L 3306:jump2.internal:3306 user@jump1.host
逻辑:先在本地建立到 jump1.host 的隧道,再通过 jump1.host 连接到 jump2.internal:3306。
1.4.2、绑定到所有网络接口
ssh -L 0.0.0.0:8080:remote:80 user@jump.host
效果:允许其他设备通过本机的 IP 访问 8080 端口(需谨慎开放权限)
1.5、注意事项
- 安全性: SSH 隧道本身加密,但转发端口的服务需自行确保安全(如数据库密码)。 避免将敏感端口(如 Redis 6379)暴露到公网。
- 权限问题: 本地端口 <1024 需 root 权限(如 -L 80:remote:80)。
- 防火墙配置: 确保本地和远程服务器的防火墙允许 SSH 端口(默认 22)通信。
二、Windows端口转发配置
2.1、添加端口转发
转发配置命令:
netsh interface portproxy add v4tov4 listenport=1433 listenaddress=xxx.xxx.xxx.163 connectport=1433 connectaddress=xxx.xxx.xxx.182
主要参数:
- v4tov4:表示IPv4到IPv4的转发
- listenport=1433: 代理在本地机器上监听的端口号
- listenaddress=xxx.xxx.xxx.163: 代理在本地机器上监听的IP地址。xxx.xxx.xxx.163 表示本机ip ,这里做了脱敏
- connectport=1433: 代理将流量转发到的目标端口
- connectaddress=xxx.xxx.xxx.182 :代理将流量转发到的目标IP地址,这里做了脱敏
设置成功后,当本地机器收到任何发往8080端口的流量时,都会将这些流量转发到IP地址为192.168.24.90的机器上的80端口。
2.2、删除端口转发
如果想要删除端口转发,可以使用以下指令,参数和添加时候一样:
netsh interface portproxy delete v4tov4 listenport=1433 listenaddress=xxx.xxx.xxx.163
2.3、查看端口转发
添加端口转发后,可以使用以下命令查看已经设置的端口转发规则:
netsh interface portproxy show all
执行上述命令后,将看到类似以下的输出,显示当前配置的所有端口转发规则:
三、两种方式优劣势分析
3.1、主要区别
特性 | netsh interface portproxy | SSH -L |
操作系统 | 仅限 Windows | 跨平台(Linux/macOS/Windows 等) |
加密与安全性 | 无加密,明文传输 | 通过 SSH 隧道加密,安全性高 |
持久性 | 系统级配置,重启后仍生效 | 会话级,SSH 连接断开后失效 |
权限需求 | 需管理员权限 | 普通用户权限(只需 SSH 连接权限) |
配置复杂度 | 需手动配置防火墙规则 | 自动通过 SSH 隧道,通常无需额外防火墙设置 |
典型场景 | 本地网络内简单的 TCP 端口重定向 | 跨网络的安全访问、绕过防火墙或 NAT |
灵活性 | 仅支持静态 TCP 端口转发 | 支持本地转发(-L)、远程转发(-R)、动态转发(-D) |
3.2、适用场景示例
- netsh interface portproxy 将本机 80 端口转发到同一内网的另一台服务器的 8080 端口。 在 Windows 服务器上长期暴露某个内部服务端口。
- SSH -L 通过跳板机安全访问内网数据库(如 ssh -L 3306:db.internal:3306 user@jump.host)。 临时调试远程服务,避免修改系统配置。
猜你喜欢
- 2025-06-12 一张图带你看懂防火墙报文转发流程!
- 2025-06-12 搞了半天,终于弄懂了TCP Socket数据的接收和发送,太难
- 2025-06-12 终于把TCP/IP 协议讲的明明白白了,再也不怕被问三次握手了
- 2025-06-12 如何构建支持 5 万设备在线的高性能 TCP 数据转发平台
- 2024-08-13 「渗透测试」内网渗透中的端口转发
- 2024-08-13 SSH端口转发(ssh端口转发似乎无法在远程主机上)
- 2024-08-13 TCP/IP和Socket的关系(tcp/ip协议和socket的区别)
- 2024-08-13 Centos利用Rinetd实现端口转发-连接阿里云RDS
- 2024-08-13 「喵咪开源软件推荐(6)」TCP链路加速技术KcpTun
- 2024-08-13 SSH端口转发总结与实战(ssh端口号)
你 发表评论:
欢迎- 06-13边缘计算网关如何实现系统高效运维?
- 06-13虚拟专用网络VPN连接配置
- 06-13WIN10/11下配置VPN(解决L2TP/IPsec无法连接的问题)
- 06-13公共网络上的私有安全通道——VPN
- 06-13远程办公如何访问公司内网办公系统和内部资源?
- 06-13VBRAS场景测试方法—如何高效验证网络设备的性能与稳定性
- 06-13Win10系统如何使用VPN远程办公
- 06-13iPhone轻松实现远程访问公司局域网电脑上的共享文件
- 最近发表
- 标签列表
-
- spire.doc (70)
- instanceclient (62)
- system.data.oracleclient (61)
- 按键小精灵源码提取 (66)
- pyqt5designer教程 (65)
- 联想刷bios工具 (66)
- c#源码 (64)
- graphics.h头文件 (62)
- mysqldump下载 (66)
- sqljdbc4.jar下载 (56)
- libmp3lame (60)
- maven3.3.9 (63)
- 二调符号库 (57)
- git.exe下载 (68)
- diskgenius_winpe (72)
- pythoncrc16 (57)
- solidworks宏文件下载 (59)
- qt帮助文档中文版 (73)
- satacontroller (66)
- hgcad (64)
- bootimg.exe (69)
- android-gif-drawable (62)
- axure9元件库免费下载 (57)
- libmysqlclient.so.18 (58)
- springbootdemo (64)
本文暂时没有评论,来添加一个吧(●'◡'●)