导读:本期聚焦于小伙伴创作的《Linux SSH端口转发详解:本地转发、远程转发、动态转发原理与实例》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《Linux SSH端口转发详解:本地转发、远程转发、动态转发原理与实例》有用,将其分享出去将是对创作者最好的鼓励。

Linux SSH端口转发的三种方式

SSH端口转发是Linux系统中常用的网络功能,通过已建立的SSH连接,将本地或远程端口的流量转发到其他地址和端口,常用于访问内网服务、绕过网络限制等场景。SSH端口转发主要分为本地转发、远程转发和动态转发三种类型,下面将分别介绍每种方式的原理、使用场景和具体用法。

一、本地端口转发

本地端口转发是将本地机器的指定端口流量,通过SSH连接转发到远程服务器可访问的目标地址和端口。适用于本地需要访问远程服务器内网中的服务,或者需要借助远程服务器访问外部受限资源的场景。

基本语法

ssh -L [本地地址:]本地端口:目标地址:目标端口 用户名@SSH服务器地址

参数说明:

  • -L:指定本地转发模式

  • 本地地址:可选参数,默认是127.0.0.1,指定本地监听的IP地址

  • 本地端口:本地机器上开启的监听端口

  • 目标地址:远程SSH服务器可访问的目标服务地址,可以是IP或者域名

  • 目标端口:目标服务的端口号

  • 用户名@SSH服务器地址:SSH连接的服务端信息

使用示例

假设存在一台跳板机jump.example.com,该跳板机可以访问内网中的数据库服务器192.168.10.20:3306,本地机器无法直接访问内网数据库,此时可以通过本地转发实现本地访问:

ssh -L 3306:192.168.10.20:3306 user@jump.ippipp.com

执行命令后,本地访问127.0.0.1:3306的流量会通过SSH连接转发到跳板机,再由跳板机转发到内网数据库192.168.10.20:3306,相当于本地直接连接了内网数据库。

二、远程端口转发

远程端口转发是将远程服务器的指定端口流量,通过SSH连接转发到本地机器可访问的目标地址和端口。适用于本地机器处于内网,需要从外部访问本地内网服务的场景,比如本地开发的服务需要临时给外网用户测试。

基本语法

ssh -R [远程地址:]远程端口:目标地址:目标端口 用户名@SSH服务器地址

参数说明:

  • -R:指定远程转发模式

  • 远程地址:可选参数,默认是127.0.0.1,指定远程服务器监听的IP地址

  • 远程端口:远程服务器上开启的监听端口

  • 目标地址:本地机器可访问的目标服务地址,可以是IP或者域名

  • 目标端口:目标服务的端口号

  • 用户名@SSH服务器地址:SSH连接的服务端信息

使用示例

假设本地机器运行了一个Web服务,监听在127.0.0.1:8080,有一台公网服务器public.ippipp.com,希望外网用户通过访问公网服务器的8080端口就能访问本地的Web服务,可以执行以下命令:

ssh -R 8080:127.0.0.1:8080 user@public.ippipp.com

命令执行后,公网服务器的8080端口流量会通过SSH连接转发到本地,再由本地转发到127.0.0.1:8080的Web服务,外网用户访问public.ippipp.com:8080即可访问本地Web服务。

三、动态端口转发

动态端口转发会在本地开启一个SOCKS代理端口,所有发往该端口的流量会通过SSH连接转发,由SSH服务器根据流量的目标地址和端口进行动态转发。适用于需要代理访问多个不同地址和端口的场景,比如临时需要代理访问多个内网服务或者外部受限网站。

基本语法

ssh -D [本地地址:]本地端口 用户名@SSH服务器地址

参数说明:

  • -D:指定动态转发模式,开启SOCKS代理

  • 本地地址:可选参数,默认是127.0.0.1,指定本地SOCKS代理监听的IP地址

  • 本地端口:本地开启的SOCKS代理端口

  • 用户名@SSH服务器地址:SSH连接的服务端信息

使用示例

假设需要借助proxy.example.com服务器代理访问外部网络,可以在本地执行以下命令:

ssh -D 1080 user@proxy.ippipp.com

命令执行后,本地开启1080端口的SOCKS5代理,将浏览器或其他应用的代理设置为socks5://127.0.0.1:1080,所有流量都会通过SSH连接转发到proxy.ippipp.com,由该服务器转发到目标地址,实现代理访问的效果。

三种转发方式对比

转发类型参数标识监听端口位置典型使用场景
本地转发-L本地机器本地访问远程服务器可访问的内网服务
远程转发-R远程服务器外网通过远程服务器访问本地内网服务
动态转发-D本地机器本地通过SOCKS代理访问多个不同目标地址

注意事项

  • 执行转发命令后,SSH连接需要保持存活,若连接断开,端口转发也会失效,可以配合-N参数(不执行远程命令,仅用于转发)和-f参数(后台运行)使用,例如ssh -NfL 3306:192.168.10.20:3306 user@jump.ippipp.com

  • 远程端口转发默认需要在SSH服务器配置中开启GatewayPorts选项,否则远程端口默认只监听127.0.0.1,外网无法直接访问,修改SSH服务器/etc/ssh/sshd_config,设置GatewayPorts yes后重启sshd服务即可允许外部访问

  • 端口转发时需要注意端口是否被占用,若本地或远程端口已被其他服务使用,转发会失败

SSH端口转发 本地端口转发 远程端口转发 动态端口转发 LinuxSSH

免责声明:已尽一切努力确保本网站所含信息的准确性。网站部分内容来源于网络或由用户自行发表,内容观点不代表本站立场。本站是个人网站免费分享,内容仅供个人学习、研究或参考使用,如内容中引用了第三方作品,其版权归原作者所有。若内容触犯了您的权益,请联系我们进行处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。前端、网络、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握网站开发与运维所需的核心技术栈。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端逻辑,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。