SSH端口转发技术详解

admin 2025年6月30日00:26:53评论5 views字数 1880阅读6分16秒阅读模式
SSH端口转发技术详解
一、SSH 端口转发技术详解

SSH(Secure Shell)不仅是一个远程登录工具,还提供了强大的端口转发(Port Forwarding)功能。

通过 SSH 端口转发,可以在本地和远程主机之间建立加密的隧道,实现安全的数据传输、绕过防火墙限制或访问受限服务。

SSH 端口转发的类型

SSH 支持三种主要的端口转发方式:

类型
名称
英文术语
功能描述
1
本地端口转发
Local Port Forwarding
将本地某个端口的数据通过 SSH 隧道转发到远程主机
2
远程端口转发
Remote Port Forwarding
将远程主机某个端口的数据通过 SSH 隧道转发到本地主机
3
动态端口转发
Dynamic Port Forwarding
创建一个 SOCKS 代理服务器,支持动态路由流量

二、详细说明与使用示例

1. 本地端口转发(Local Port Forwarding)

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

将本地机器上指定端口的流量通过 SSH 隧道发送到目标主机的目标端口。

2. 应用场景:

  • 访问远程数据库(如 MySQL、PostgreSQL)
  • 绕过本地网络限制访问内网服务

假设你想在本地访问远程服务器 dbserver 上运行的 MySQL 数据库(默认端口 3306),可以通过 SSH 跳转服务器 gateway.example.com 实现:

ssh -L 3306:dbserver:3306 [email protected] 
以后就可以在本地使用如下命令连接远程数据库:
mysql -h 127.0.0.1 -P 3306 -u root -p 

本地 3306 端口被映射到 dbserver:3306,所有数据通过 gateway.example.com 的 SSH 加密通道传输。

3. 远程端口转发(Remote Port Forwarding)
ssh -R [远程IP:]远程端口:目标主机:目标端口 用户名@SSH服务器

将远程服务器上的某个端口监听,并将该端口的流量通过 SSH 隧道转发到本地目标主机。

应用场景:

将本地 Web 服务暴露给公网(如调试本地 API)内网穿透(让外网访问局域网中的服务)
在本地开发了一个 Web 服务运行在 localhost:8080,想让远程服务器 remote.example.com 上的用户访问它:
ssh -R 8080:localhost:8080 [email protected] 
远程服务器上的用户可以通过访问 http://localhost:8080 来访问你的本地服务。
注意:需要确保远程 SSH 服务器允许远程端口转发(配置文件中 GatewayPorts yes)。
4. 动态端口转发(Dynamic Port Forwarding)
ssh -D [本地IP:]本地端口 用户名@SSH服务器

创建一个 SOCKS5 代理服务器,客户端可以将任意流量通过这个代理经由 SSH 隧道转发出去,实现类似“翻墙”的效果。

应用场景:

  • 浏览器通过 SOCKS 代理访问外部网络
  • 安全访问多个不同目标地址的服务

建立一个 SOCKS5 代理服务器在本地 1080 端口:

ssh -D 1080 user@example.com 

在浏览器中设置代理为 SOCKS5 127.0.0.1:1080,即可通过远程服务器上网。

三、其他常用参数说明

参数

-N不执行远程命令,仅用于端口转发

-f后台运行 SSH

-g允许远程主机连接本地转发端口(需配合 -L 使用)

-C启用压缩,加快传输速度

-T禁用伪终端分配,适用于自动化脚本

ssh -fN -L 8080:internal-server:80 user@gateway

后台运行并建立本地端口转发,不执行命令。

四、SSH 配置文件启用/禁用端口转发

编辑 /etc/ssh/sshd_config 文件:

AllowTcpForwarding yes/no   # 控制是否允许 TCP 转发GatewayPorts no/yes/clientspecified  # 是否允许远程绑定非 localhost 地址

修改后重启 SSH 服务:

sudo systemctl restart sshd

五、实际应用场景汇总

SSH端口转发技术详解

六、总结对比表

SSH端口转发技术详解

七、安全建议

  • 避免滥用:不要随意开启远程端口转发,防止被攻击者利用。

  • 最小权限原则:只为必要用户启用 AllowTcpForwarding 和 GatewayPorts。

  • 日志监控:定期查看 SSH 日志(/var/log/auth.log 或 journalctl)。

  • 结合密钥认证:使用 SSH 密钥代替密码,提高安全性。

原文始发于微信公众号(运维星火燎原):SSH端口转发技术详解

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年6月30日00:26:53
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   SSH端口转发技术详解https://cn-sec.com/archives/4209296.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息