SSH隧道技术-端口转发
第19篇:SSH隧道技术-端口转发(干货)
SSH的端口转发按照SSH主机(即客户端和服务端)的相对物理距离分为本地转发和远程转发。本地转发,即是在本地客户机由SSH客户端实现的端口转发技术。而本地转发根据设定端口转发的数量分为本地单端口转发和本地多端口转发,本文先讲解SSH的本地端口转发。
SSH隧道的单端口转发
ssh服务和其他服务应用不在同一台主机的情况下,例如典型的例子是如下图我们从外部网络穿透Linux防火墙访问内部网络的oracle数据库服务器。下面示例的参数如下
- oracle的默认监听端口是1521,ip地址为192.168.50.14
- Linux防火墙的公网ip地址144.44.44.44,访问防火墙的ssh端口是9494
- 出差办公的电脑被ssh客户端监听的端口是1922
那么使用满足上面的需求的ssh的端口转发如下图所示
ssh -L 1922:192.168.50.14:1521 it-dog@144.44.44.44 -p 9494
运行该命令后,Linux防火墙提示您输入远程 SSH 用户密码。本地客户端和远程的Linux防火墙建立 SSH 隧道。

现在,如果您将本地机器数据库客户端指向 127.0.0.1:1922,Linux防火墙充当中间跳板将ssh隧道中的请求流量在解密后转发到内网的oracle服务器,类似地oracle服务器的所有响应流量也会通过ssh隧道传递到本地客户机。
SSH隧道的多端口转发
单个 ssh 命令中将多个端口转发到多个远端的目标主机。例如,仍然以上图为例,还有另一个 Windows 服务器运行着VNC服务,那么您想从本地客户端连接到两个服务器,您可以运行类似的ssh命令:
ssh -L 1922:192.168.50.14:1521 1923:192.168.50.1:5900 it-dog@144.44.44.44 -p 9494
那么在本地客户机访问Oracle服务器使用127.0.0.1:1922,访问第二台服务器自然使用 127.0.0.1:1923。
如果您在设置隧道时遇到问题,请检查远程SSH服务器的配置确保AllowTcpForwarding 未设置为 no。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· NetPad:一个.NET开源、跨平台的C#编辑器
2022-07-14 CentOS7搭建samba服务,用户密码访问