跳板机 SSH 端口转发

跳板机 SSH 端口转发 

问题类型:网络访问 / SSH 端口转发
核心结论:目标服务器强制 HTTPS 重定向,需转发 443 端口而非 80 端口

一、场景描述

节点IP 地址角色可达性
本机 Windows 本地 操作终端 可 SSH 到 205
跳板机 172.16.225.205 SSH 中继 可访问 206 的 80/443
目标机 172.16.225.206 Web 服务器 禁止 SSH,仅开放 HTTP/HTTPS

目标:在本机 Windows 浏览器中访问 206 的 Web 管理页面(/aims/index.html#/system/config),登录后开启 SSH 访问。

二、网络拓扑

[本机 Windows] --SSH隧道--> [172.16.225.205 跳板机] --内网--> [172.16.225.206 Web服务器]

    ↑                                                                                      ↑
浏览器访问 localhost:8443                                                                  443 端口 (HTTPS)

三、试错过程

尝试 1:转发到目标 8086 端口
ssh -N -L 8080:172.16.225.206:8086 root@172.16.225.205

浏览器访问:http://localhost:8080/aims/...

结果:连接失败,目标服务未监听 8086 端口
尝试 2:转发到目标 80 端口(HTTP)
ssh -N -L 8086:172.16.225.206:80 root@172.16.225.205

浏览器访问:http://localhost:8086/aims/index.html#/system/config

结果:地址栏自动跳转为 https://localhost/...,显示"无法访问此页面"
尝试 3:清除浏览器 HSTS 缓存

Edge/Chrome 访问 chrome://net-internals/#hsts,删除 localhost 域安全策略。

结果:无效,仍自动跳转 HTTPS
尝试 4:无痕模式

Ctrl+Shift+N 打开无痕窗口,访问 http://localhost:8086

结果:无效,仍被强制 HTTPS
尝试 5:改用 127.0.0.1

访问 http://127.0.0.1:8086/aims/...

结果:无效,127.0.0.1 同样被强制 HTTPS
尝试 6:SOCKS5 动态代理
ssh -N -D 1080 root@172.16.225.205

浏览器 Proxy Switcher 配置 SOCKS5 代理 127.0.0.1:1080,直接访问原始地址。

结果:仍然失败,无法建立有效连接

四、根因排查

关键诊断命令(在跳板机 205 上执行)

# 测试 80 端口
curl -I http://172.16.225.206/aims/index.html

# 返回结果:
HTTP/1.1 301 Moved Permanently
Location: https://172.16.225.206/aims/index.html
# 测试 443 端口
curl -Ik https://172.16.225.206/aims/index.html

# 返回结果:
HTTP/1.1 200

根因确认:目标服务器(206)对 80 端口的 HTTP 请求返回 301 永久重定向,强制跳转到 HTTPS(443 端口)。因此无论通过何种方式访问 HTTP,最终都会被重定向到 HTTPS,而之前的 SSH 隧道只转发了 80 端口,导致 HTTPS 请求无法到达目标。

五、最终成功方案

成功方案:转发目标 443 端口(HTTPS)

步骤 1:建立 SSH 隧道

ssh -N -L 8443:172.16.225.206:443 root@172.16.225.205

保持 PowerShell 窗口运行(按 Ctrl+C 断开)。

步骤 2:浏览器访问

https://localhost:8443/aims/index.html#/system/config

步骤 3:处理证书警告

浏览器提示"您的连接不是私密连接"(证书域名不匹配,因为证书是给 172.16.225.206 的,不是给 localhost 的)。

点击 高级 → 继续前往 localhost(不安全)

步骤 4:登录并开启 SSH

  • 用户名:********
  • 密码:******
  • 进入系统配置页面,开启 SSH 访问
结果:成功访问 Web 管理页面,完成 SSH 开启操作

六、命令详解

参数含义
ssh 安全外壳协议客户端
-N No command,只建立隧道,不执行远程 shell
-L Local forward,本地端口转发
8443 本地监听端口(本机 Windows 上)
172.16.225.206 目标服务器地址
443 目标端口(HTTPS 标准端口)
root@172.16.225.205 跳板机(SSH 中继)

数据流向

浏览器 -> localhost:8443 -> SSH隧道 -> 172.16.225.205 -> 172.16.225.206:443
         (本机)              (加密)        (跳板机)          (目标Web服务器)

经验总结

  • 先排查再转发:在跳板机上用 curl -I 确认目标端口和协议,避免盲目尝试
  • 注意 301 重定向:服务器可能强制 HTTPS,HTTP 转发无用
  • HTTPS 需转发 443:SSL/TLS 握手必须在目标服务器完成,不能通过 HTTP 隧道中转
  • 证书警告可忽略:通过 localhost 访问时域名不匹配是正常的,点击继续即可
  • 保持 SSH 窗口运行:-N 模式下隧道随 SSH 连接存活,断开即失效
posted @ 2026-06-13 15:40  鹏小鹕  阅读(43)  评论(0)    收藏  举报