SSH 跳板机:安全访问内网服务

数据库、面板后台这些服务不想暴露在公网?SSH 跳板机(Jump Host)是最省事的方案:不用开端口、不用配 VPN,一条 -J 参数或 ProxyJump 配置,本地直接访问内网服务,安全又方便。

我是小够。很多人的 VPS 上跑着数据库、面板后台、监控面板,这些东西需要访问,但又不想把端口暴露在公网——每多开一个公网端口,就多一个被扫的目标。SSH 跳板机就是解决这个问题的:只暴露 SSH 一个端口,所有内网服务都走 SSH 隧道访问。

最简单:-J 参数

ssh -J 跳板机用户@跳板机IP 内网用户@内网IP

-J 就是 Jump,一条命令经跳板机中转登录内网机器。跳板机就是你那台加固好的 VPS。

写进配置文件,一劳永逸

每次都敲 -J 太麻烦,写进 ~/.ssh/config:

Host 内网机器
    HostName 192.168.1.10
    User ubuntu
    ProxyJump 跳板机

Host 跳板机
    HostName 你的公网IP
    User xiaogou
    Port 2222

之后 ssh 内网机器 就行,隧道自动建立。密钥、端口都在各自 Host 段里配好,清晰又省心。

端口转发:本地直接用内网服务

比如内网有一台跑着数据库(3306),不想公网暴露:

ssh -L 13306:localhost:3306 跳板机

然后本地连 127.0.0.1:13306,流量经 SSH 隧道直达内网数据库。数据库本身只监听内网地址,公网扫描器根本看不到它。这招对面板后台、监控页面同样适用。

安全要点

  1. 跳板机本身必须是全站加固得最狠的一台:密钥登录、fail2ban、防火墙,一个不能少。它是唯一的入口,丢了它等于全丢。
  2. 内网机器的 SSH 建议只监听内网地址(ListenAddress 192.168.1.10),公网方向彻底不响应。
  3. 隧道用完就关,别长期挂着。~/.ssh/config 里可以加 ServerAliveInterval 保活,但人离开后记得断开。

进阶:跳板机 + 多跳

内网还分层?SSH 支持多跳,用逗号分隔:

ssh -J 跳板机,中转机2 目标机器

或者在 config 里写多条 ProxyJump。原理一样:流量一层层穿过去,每一跳都要认证。层数多了延迟会上去,内网分两层以内体验最好。

Windows 用户怎么办

PuTTY 党也别急:新版 PuTTY 和 MobaXterm 都支持跳板机(MobaXterm 叫 “SSH gateway”,图形界面里填就行)。Windows 10/11 自带的 OpenSSH 客户端(C:\Windows\System32\OpenSSH\ssh.exe)同样支持 -J 参数和 ~/.ssh/config,和 Linux 用法一模一样,不用学两套。

小够的总结:跳板机是"一个入口管所有"的思路,特别适合手里有多台 VPS 的人。配合密钥认证,它比为每个服务单独开端口、单独配密码安全得多,也省心得多。记住:暴露面越小,操心越少。