小白也能学会!如何远程访问公司内网的 FastAPI 服务
🚀 小白也能学会!如何远程访问公司内网的 FastAPI 服务
用最简单的话,教你通过 SSH 隧道,在公司外面也能访问内网部署的 FastAPI 服务。
适用人群:零基础新手,只需要会复制粘贴命令就行。
📖 为什么要看这篇文章?
很多公司会把业务系统(比如一个用 FastAPI 写的后端服务)部署在公司内网的服务器上。
- 服务器在内网,比如 IP 是
192.168.0.xxx - 你在家里或外出办公,没法直接访问这个内网地址
- 但公司给你开了一个远程通道(常见叫法:frp / VPN / 堡垒机),给你一个对外地址和端口,比如“deepseek.test.com:10101”
- 你的 FastAPI 服务就跑在那台服务器上,监听某个端口(比如
6101)
问题来了:我在外面,怎么访问这个服务?🤔
答案:打个"电话"(SSH 隧道),把服务器的端口"接"到你本地电脑上,就能像访问本机服务一样访问它了!
🛠️ 准备工作
你需要准备哪些信息?(下面内容为构造的模拟信息,仅为举例说明,非真实账号信息)
| 项目 | 说明 | 你从哪里找 |
|---|---|---|
| 服务器地址 | deepseek.test.com | 公司分配的远程通道域名 |
| SSH 端口 | 10101 | 远程通道端口 |
| 用户名 | yyq | 服务器登录账号 |
| 密码 | Yyq@2026.. | 登录密码 |
| 服务端口 | 6101 | FastAPI 服务监听的端口 |
💡小技巧:这些信息通常在项目的部署文档里都能找到,或者直接问维护服务器的同事。
检查电脑有没有 SSH
在 Windows 搜索框输入cmd回车,打开命令提示符,输入:
ssh如果出现:
usage: ssh [-46AaCfGgKkMNnqsTtVvXxYy] [-B bind_interface] ...说明你的电脑自带 SSH,Windows 10/11 默认都有,不用额外装。
实例:
如果提示"不是内部或外部命令",说明系统较老,搜索"如何在 Windows 安装 OpenSSH"装一下即可。
📞 第一步:打"电话"(建立 SSH 隧道)
操作步骤
第 1 步:打开 cmd 或 PowerShell
- 按
Win + R键 - 输入
cmd,回车 - 出现一个黑色窗口
第 2 步:输入建立隧道的命令
命令格式如下(把里面的"占位符"换成你自己的信息):
ssh-p你的SSH端口-L本地端口:127.0.0.1:服务端口 用户名@服务器地址我们的实际命令:
ssh-p10101-L6101:127.0.0.1:6101 yyq@deepseek.test.com第 3 步:输入密码
- 第一次连接会提示确认主机指纹,输入
yes回车 - 然后提示输入密码:
Yyq@2025.. - 注意:输密码时屏幕不显示任何字符(这是正常的,防止偷看),直接输完按回车
第 4 步:看到成功提示
看到类似这样的界面,就说明连上了:
Welcome to Ubuntu 24.04.2 LTS 你的用户名@你的服务器:~$重要!👉这个窗口不要关!不要关!不要关!关了就断了。
🌐 第二步:打开浏览器访问
保持 SSH 窗口开着,打开浏览器(Chrome、Edge 等),访问:
http://127.0.0.1:本地端口/health比如你本地端口用的 6101,就访问:
http://127.0.0.1:6101/health如果看到类似:
{"status":"ok"}🎉恭喜你,成功了!
还能看什么?
| 地址 | 看什么 |
|---|---|
http://127.0.0.1:6101/health | 健康检查(最简单) |
http://127.0.0.1:6101/docs | FastAPI 自带接口文档(Swagger,最直观) |
http://127.0.0.1:6101/redoc | 接口文档(另一种风格) |
💡强烈建议打开
http://127.0.0.1:6101/docs!FastAPI 框架会自动生成一个漂亮的接口文档页面,上面列出所有 API 接口,每个接口都可以直接点击“Try it out”按钮测试调用,超级方便!
🔑 第三步:调用需要"钥匙"的接口
很多业务接口不是免费开放的,需要带Token(可以理解成一把"钥匙")。
Token 是什么?
Token 是一串授权字符串,通常长这样:
dataset-xxxxxxxxxxxxxxxxxxxxxxxxxx有了它,接口才知道"你有权限访问"。Token 一般由系统管理员或后端同事提供。
使用方式
方式一:在浏览器 docs 页面测试(最简单)
- 打开
http://127.0.0.1:6101/docs - 找到右上角的Authorize按钮
- 输入
Bearer 你的Token - 点击 Authorize
- 然后随便点一个接口,点“Try it out”就能测试
方式二:用 curl 命令(敲键盘)
# 打开一个 cmd 窗口,输入:curl"http://127.0.0.1:6101/v1/datasets"^-H"Authorization: Bearer 你的Token"小提示:
^是 Windows cmd 里的换行符,如果命令写在一行就不用加。
⚠️ 常见问题(小白必看)
Q1:为什么我连不上?
按顺序检查:
- ✅ SSH 窗口还开着吗?(关了就连不上了)
- ✅ 密码输对了吗?(注意大小写)
- ✅ 是不是没连公司内网?(一般需要先连 VPN 才能访问远程通道)
- ✅ 服务器地址、端口写对了吗?
Q2:提示"端口被占用"
如果看到:
bind: Address already in use说明你本地这个端口已经被别的程序占了。换个端口即可,比如从 6101 换成 8080:
ssh-p10101-L8080:127.0.0.1:6101 用户名@服务器地址然后浏览器访问http://127.0.0.1:8080/health
Q3:提示"Host key verification failed"
第一次连某台服务器时会提示:
The authenticity of host ... can't be established. Are you sure you want to continue connecting?输入yes回车,以后就不会再提示了。
Q4:怎么断开?
直接关掉 SSH 窗口,或按Ctrl + D,或输入exit回车。
Q5:断开后想再连?
重新打开 cmd,再执行一次那条 SSH 命令即可。
📋 一句话总结
# 实际命令ssh-p10101-L6101:127.0.0.1:6101 yyq@deepseek.test.com# 然后浏览器访问:http://127.0.0.1:6101/docs记住三个关键点:
- 🪟 SSH 窗口不要关
- 🔑 需要权限的接口要加
Authorization: Bearer 你的Token - 🌐 浏览器打开
http://127.0.0.1:本地端口/docs最方便
🎁 进阶:为什么这样能行?(给想深入的同学)
简单说,SSH 的-L参数做了一个端口转发:
你本地端口 6101 ←→ SSH隧道 ←→ 服务器端口 6101所有发到你本地 6101 端口的请求,都会被 SSH"悄悄送到"服务器的 6101 端口,再把服务器的响应"原路送回"。这样你就感觉像是在访问自己电脑上的服务一样,但其实数据都走的是加密的 SSH 通道,既安全又方便。
这个概念叫SSH 端口转发(Port Forwarding),是运维和开发同学的常用技能,学会它以后很多远程访问问题都能自己解决!
