SSH 隧道实战指南:本地与远程端口转发

查看原文 HN 讨论

文章摘要

这是一篇讲解 SSH 隧道(SSH tunnels)的实用教程,系统梳理了本地端口转发与远程端口转发这两大核心机制。本地端口转发(ssh -L 让你把一个远程服务映射到本地端口上访问,语法为 ssh -L [local_addr:]local_port:remote_addr:remote_port [user@]sshd_addr远程端口转发(ssh -R 方向相反,把本地服务暴露到远程网关的端口上,语法为 ssh -R [remote_addr:]remote_port:local_addr:local_port [user@]gateway_addr。文章给出了一个便于记忆的口诀:-L 中的 L 代表 Local 一侧在监听,-R 中的 R 代表 Remote 一侧在监听。

文章还介绍了两种动态变体:动态本地转发(ssh -D 把 SSH 客户端变成一个 SOCKS 代理,无需事先指定每一个目标地址;动态远程转发(不带目标地址的 ssh -R 则把 SSH 服务端变成 SOCKS 代理,实现更灵活的路由。

在实际应用层面,SSH 隧道可用于访问私有数据库和内网 Web 应用、把家庭网络的服务对外暴露、经由堡垒机(bastion host)访问 VPC 内部端点,以及通过跳板机(jump host)转发调试端口等场景。整体而言,这篇教程属于”读一遍手册就能学会”的扎实基础运维知识。

HN 评论精华

讨论中最热闹的话题是”文章没提到跳板/ProxyJump”这一遗漏。