GPU 云服务器怎么开 Jupyter:SSH 隧道连接与费用边界

2026-09-16 31 0

在 GPU 云服务器上跑训练或推理任务时,Jupyter Lab / Notebook 是最常用的交互式开发环境。但云端启动 Jupyter 和本地开发有几个关键差异:需要远程访问、要考虑安全性、SSH 断开后进程可能终止,以及按小时计费时关机和销毁对费用的影响不同。

这篇文章给出在租用的 GPU 实例上启动 Jupyter 并安全连接的标准做法,以及如何避免不必要的存储费用。

启动 Jupyter:三个必加参数

在云服务器上启动 Jupyter Lab 时,需要添加几个参数来适配远程无头环境:

jupyter lab --no-browser --ip=0.0.0.0 --port=8888
  • --no-browser:云服务器没有图形界面,防止尝试打开本地浏览器
  • --ip=0.0.0.0:允许非本地环回的网络请求(默认只监听 127.0.0.1)
  • --port=8888:指定端口,默认也是 8888,显式写出便于后续端口转发

如果你是以 root 用户登录或在容器内运行,还需要加上:

jupyter lab --no-browser --ip=0.0.0.0 --port=8888 --allow-root

启动后终端会输出带 Token 的访问链接,类似:

http://127.0.0.1:8888/lab?token=abc123def456...

这个 Token 是首次登录的凭证,保存好。

如果还没环境

首次租 GPU 云服务器时,从零配置 Python、CUDA、PyTorch 容易踩坑(驱动版本不匹配、编译时间长)。可以直接选预装好依赖的镜像模板,Jupyter 和常用框架都配好了,开机即用。NexGPU 的镜像模板页面列出了 PyTorch、TensorFlow、ComfyUI 等场景的一键部署选项,按你要跑的任务选就行。

连接方式:SSH 隧道比公网直连安全

启动 Jupyter 后,有两种访问方式:

  1. 公网直接访问:云服务器安全组开放 8888 端口,浏览器输入 http://<服务器公网IP>:8888 访问
  2. SSH 端口转发:Jupyter 只监听本地环回,通过 SSH 隧道把远程端口映射到本地

公网直连的问题是端口暴露在互联网上,即使有 Token 保护,也容易被端口扫描工具发现并尝试暴力破解。而且还需要额外配置云服务商的安全组规则,多一层操作。

推荐做法是 SSH 本地端口转发(Local Port Forwarding),既安全又省事。

具体步骤

1. 在云服务器上启动 Jupyter,监听本地环回

jupyter lab --no-browser --port=8888

注意这里不需要 --ip=0.0.0.0,默认监听 127.0.0.1 就行,外部无法直接访问。

2. 在本地终端建立 SSH 隧道

打开新的本地终端窗口(不要关闭运行 Jupyter 的那个),执行:

ssh -N -L 8888:localhost:8888 user@server_ip
  • -N:不执行远程命令,只做端口转发
  • -L 8888:localhost:8888:把远程的 8888 端口映射到本地 8888 端口
  • user@server_ip:替换成你的云服务器登录用户和公网 IP

如果云服务器 SSH 端口不是默认 22,加上 -p 参数:

ssh -N -L 8888:localhost:8888 -p 2222 user@server_ip

隧道建立后这个终端会挂起(没有任何输出是正常的),不要关闭。

3. 本地浏览器访问

打开浏览器,访问 http://localhost:8888,粘贴启动 Jupyter 时输出的 Token,即可登录。

这种方式下,数据流完全走 SSH 加密通道,外部无法直接访问云服务器的 8888 端口,也不需要修改安全组规则。

SSH 本地端口转发连接 Jupyter 的数据流向图

如果本地 8888 端口已被占用,可以映射到其他端口,比如本地 8889:

ssh -N -L 8889:localhost:8888 user@server_ip

然后访问 http://localhost:8889

保持后台运行:断开 SSH 不中断任务

上面的启动方式有个问题:一旦关闭 SSH 终端(或网络抖动断连),Jupyter 进程会被终止,正在跑的训练或推理任务也会中断。

跑长时间任务时,需要用工具让 Jupyter 在后台持久运行。

方案一:tmux 会话管理

tmux 是终端复用工具,可以创建独立的会话,SSH 断开后会话仍在后台运行。

安装 tmux(大部分云镜像已预装):

# Ubuntu/Debian
sudo apt install tmux

# CentOS/RHEL
sudo yum install tmux

使用流程

  1. SSH 登录云服务器后,创建新会话:
tmux new -s jupyter
  1. 在 tmux 会话中启动 Jupyter:
jupyter lab --no-browser --port=8888
  1. Ctrl+B 然后按 D 键,离开(detach)会话但不终止,Jupyter 继续在后台运行
  2. 关闭 SSH 或重新登录后,用这个命令恢复会话:
tmux attach -t jupyter

就能重新看到 Jupyter 的运行日志。查看所有会话:tmux ls

方案二:nohup 后台启动

如果不想用 tmux,可以用 nohup 把 Jupyter 放到后台:

nohup jupyter lab --no-browser --port=8888 > jupyter.log 2>&1 &
  • nohup:忽略挂断信号,SSH 断开后继续运行
  • > jupyter.log 2>&1:把输出和错误重定向到日志文件
  • &:放到后台执行

启动后会返回进程 ID,可以通过 tail -f jupyter.log 查看日志,找到 Token。

停止 Jupyter 时,先找到进程 ID:

ps aux | grep jupyter

然后 kill 对应的 PID:

kill <PID>

费用边界:关机和销毁的区别

在按小时计费的 GPU 云服务上,理解实例生命周期对控制成本很重要。

以 NexGPU 为例,计费项只有三项:算力、存储、流量。关键区别在于:

  • 关机(Stop):停止算力计费,但存储费继续扣,因为你的系统盘、代码、模型权重文件都还保留着,下次开机可以直接继续用
  • 销毁(Destroy):彻底删除实例和所有数据,停止全部扣费

实际使用中的策略:

短期中断:比如晚上不跑任务了,但明天还要继续,选关机。第二天开机后,Jupyter Notebook、虚拟环境、下载的数据集都还在,用 tmux attach 或重新启动 Jupyter 就能接着干。存储费按小时算,几十 GB 的系统盘一天也就几毛到一两块钱。

任务结束:模型训练完、权重文件已经下载到本地,短期内不会再用这个实例,就销毁。如果只是关机,存储费会一直扣,几天下来可能比算力费还多。

保存工作成果:销毁前记得备份:

  • Jupyter Notebook 文件(.ipynb)
  • 训练好的模型权重
  • 自定义的配置文件

可以用 scprsync 从云端下载到本地,或者传到对象存储。下次租新实例时,上传回去或从对象存储拉取。

NexGPU 的账单可以在控制台实时查看,算力和存储分开列,能清楚看到关机后存储费在跑。如果不确定要租多久,可以先看价格页面的单价,按你的存储量估算成本。

常见问题

Q:SSH 隧道建立后浏览器无法访问 localhost:8888

检查:

  1. Jupyter 是否正常启动(没有报错退出)
  2. SSH 隧道命令中的端口号是否和 Jupyter 启动端口一致
  3. 本地 8888 端口是否被其他程序占用(换个端口试试)
  4. SSH 隧道是否断开(重新执行 ssh -N -L 命令)

Q:Token 丢了怎么办

在运行 Jupyter 的终端或 tmux 会话里,按 Ctrl+C 停止 Jupyter,重新启动会生成新 Token。或者用这个命令列出当前所有 Token:

jupyter server list

Q:能不能设置密码代替 Token

可以。首次启动后,在 Jupyter 界面的设置里可以配置密码。或者用命令行生成密码哈希:

jupyter lab password

按提示输入密码,下次启动就可以用密码登录。不过 SSH 隧道本身已经很安全,Token 也够用。

Q:多个 Jupyter 实例能同时跑吗

可以,指定不同端口就行:

# 第一个实例
jupyter lab --no-browser --port=8888

# 第二个实例
jupyter lab --no-browser --port=8889

本地建立两条隧道,分别映射到不同端口。


总结操作顺序:选镜像开实例 → SSH 登录 → tmux 新建会话 → 启动 Jupyter → 本地建 SSH 隧道 → 浏览器访问 localhost 粘贴 Token → 任务跑完下载结果 → 销毁实例停止全部扣费。SSH 端口转发省去安全组配置,tmux 保证断线不影响任务,关机和销毁分清楚就能控制成本。

相关文章

GPU 实例端口映射怎么设置:SSH 隧道与公网映射两条路
GPU 云服务器怎么开 Jupyter:SSH 隧道连接与费用边界
租的 GPU 怎么用 SSH 连接:密钥、端口转发与常见报错处理
2026 GPU云服务器选型指南:LLM推理与微调下的硬件带宽、吞吐与成本优化策略

评论(0)

暂无评论

发布评论