本地Flask API无法被远程SSH机器调用,SSH隧道配置后仍报404
问题分析与解决方案
核心错误:SSH端口转发参数用反了
你使用的ssh -L是本地端口转发,作用是把本地端口映射到远程机器的服务,但你需要的是让远程机器访问本地Flask服务,应该用远程端口转发(-R参数)。
修正步骤
1. 验证本地Flask服务正常运行
先在本地确认服务可用:
curl http://localhost:5000
应返回{"data": "hi"},确保服务启动正常。
2. 建立正确的SSH隧道
在本地机器执行以下命令(替换为你的远程账号和IP):
ssh -R 4032:localhost:5000 nld@103.119.132.170
该命令的作用是:将远程机器的4032端口,转发到你本地机器的localhost:5000端口(即你的Flask服务)。
3. 远程机器测试访问
登录远程机器后,运行以下Python代码:
import requests response = requests.get("http://127.0.0.1:4032") print(response.status_code) print(response.json())
此时应返回200状态码和{"data": "hi"}的结果。
额外排查点
- 若仍有问题,检查SSH连接是否保持活跃,隧道未断开。
- 确认远程机器本地防火墙未限制
4032端口(本地访问127.0.0.1一般无需额外开放端口)。 - 排查本地
5000端口是否被其他进程占用。
内容的提问来源于stack exchange,提问作者panda
相关产品推荐
相关产品推荐

