SSH 隧道与端口转发技术
掌握本地、远程和动态端口转发,并了解它们的合法用途及安全敏感场景。
SSH 隧道与端口转发技术 是 CoddyKit 上的免费 Cryptology Academy 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Cryptology Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Cryptology Academy 课程共包含 4 节课。
本地端口转发概念
本地端口转发(ssh -L local_port:destination_host:destination_port user@ssh_server)会在您的本地计算机上绑定一个端口。发送到该本地端口的流量会通过加密的 SSH 连接传输到 SSH 服务器,然后由 SSH 服务器连接到目标位置。本地应用程序只需与 localhost 通信,SSH 会安全地将流量传送到远程目标。
本地转发使用场景:访问数据库
本地端口转发的常见使用场景,是访问防火墙后面的内部数据库。使用 ssh -L 5432:db.internal:5432 user@bastion 后,您的本地 PostgreSQL 客户端会连接到 localhost:5432。堡垒主机会将这些流量转发到内部数据库服务器,而该服务器无法从互联网直接访问。
远程端口转发概念
远程端口转发(ssh -R remote_port:local_host:local_port user@ssh_server)会在远程 SSH 服务器上绑定一个端口。当外部客户端连接到该远程端口时,流量会通过 SSH 隧道返回您的本地计算机。这样,您就可以通过面向互联网的服务器,将本地运行的服务暴露给外部网络。
远程转发使用场景:位于 NAT 后面
当您的计算机位于 NAT 后面、无法直接接收传入连接时,远程转发尤其有用。通过建立到公共服务器的反向隧道,您可以让外部客户端通过该公共服务器访问本地服务。一些远程访问工具和物联网设备管理系统也会使用这种技术。
动态端口转发:SOCKS5 代理
动态端口转发(ssh -D local_port user@ssh_server)会在您的本地计算机上创建 SOCKS5 代理。任何支持 SOCKS5 的应用程序都可以通过该代理路由流量,而这些流量看起来会来自 SSH 服务器。这样实际上可以将您的浏览流量通过远程网络进行路由,适合访问受地理位置限制的资源,或绕过本地网络过滤。
反向隧道及其安全影响
反向隧道功能强大,但也会带来安全风险。如果服务器允许 GatewayPorts,远程转发的端口就会对公共互联网开放,而不只对 localhost 开放。入侵带有反向隧道的计算机后,攻击者可能会访问内部服务。组织应监控未经授权的反向隧道,并在 SSH 配置中限制 GatewayPorts。
SSH 服务器隧道控制
SSH 服务器配置会控制隧道功能。AllowTcpForwarding 控制是否允许本地和远程端口转发。AllowStreamLocalForwarding 控制 Unix 套接字转发。将这些选项设置为 no 可以为所有用户禁用隧道;您也可以按用户或组进行限制。禁用不必要的转发可以缩小攻击面。
使用 tun 设备将 SSH 用作 VPN
SSH 支持创建 tun 网络接口,以实现完整的 IP 隧道(ssh -w)。这样,SSH 就可以成为轻量级 VPN,传输的是完整的 IP 数据包,而不只是特定的 TCP 连接。服务器必须启用 PermitTunnel。虽然这种方式的效率低于专用 VPN 软件,但它无需安装其他软件,并且可以利用现有的 SSH 基础设施。
连接复用
SSH 连接复用(ControlMaster 和 ControlPath 设置)会为新会话重用现有的 SSH 连接。这样可以显著加快与同一主机建立的后续连接,在脚本化环境中尤其有价值。借助共享连接,还可以让隧道跨多个 SSH 会话持续保持。
检测 SSH 隧道
网络管理员可以通过异常的流量模式检测 SSH 隧道:例如,端口 22 上长时间保持的 TCP 连接、对于本应只承载终端流量的连接而言异常高的数据量,或者连接建立后又访问已知的敏感目的地。深度数据包检测无法查看 SSH 内容,但元数据分析可以标记可疑的隧道行为。
隧道配置最佳实践
对于经授权的使用,请记录所有隧道及其用途。使用 -N(不执行命令)配合隧道,避免不必要地打开命令行环境;使用 -f(后台运行),让隧道在后台运行而不阻塞您的终端。对于持久隧道,请使用 AutoSSH 或 systemd 套接字激活,以便在连接断开时自动重启隧道。
本地端口转发与远程端口转发
您希望通过一台公网 SSH 服务器,将本地开发服务器(运行在端口 3000 上)暴露到互联网。应使用哪种转发类型?
SSH 隧道回顾
SSH 隧道回顾:本地转发(-L)可以从您的计算机安全地访问内部服务,远程转发(-R)可以通过公网服务器暴露本地服务,动态转发(-D)可以创建 SOCKS5 代理来路由应用层流量,tun 转发可以实现完整的 IP VPN,而服务器上的 AllowTcpForwarding 则控制这些功能。
常见问题解答
「SSH 隧道与端口转发技术」课时是免费的吗?
是的 — 「SSH 隧道与端口转发技术」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Cryptology Academy 课程的其余内容,请升级到 CoddyKit PRO。 Cryptology Academy 课程共包含 4 节课。
「SSH 隧道与端口转发技术」这节课中我会学到什么?
掌握本地、远程和动态端口转发,并了解它们的合法用途及安全敏感场景。 你通过在浏览器中直接运行的动手代码来练习 Cryptology Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Cryptology Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Cryptology Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 4 节。
「SSH 隧道与端口转发技术」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Cryptology Academy 课中编写并运行代码吗?
能。每节 Cryptology Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- SSH 握手与主机密钥认证
- 公钥认证与代理转发
- SSH 隧道与端口转发技术
- SSH 加固与审计最佳实践