VSCode连不上远程Jupyter服务器主因是服务端未正确启动或监听地址错误;需用--ip=0.0.0.0启动、配对API路径与token、SSH隧道避免localhost、手动注册远程kernel。

VSCode 连不上远程 Jupyter 服务器,90% 的问题出在服务端没跑起来或监听地址不对,而不是 VSCode 设置错了。
远程 jupyter-server 必须监听 --ip=0.0.0.0
只运行 jupyter notebook 或 jupyter lab 默认监听 127.0.0.1,本地回环地址对外不可达。VSCode 从本机发请求,自然连不上。
- 正确启动命令(Jupyter Lab 3.0+):
jupyter server --ip=0.0.0.0 --port=8888 --no-browser --allow-root --token='' --NotebookApp.password='' -
--ip=0.0.0.0不可省略;--allow-root在容器或 root 用户下必须加,否则启动失败 - 生产环境务必配 token,空 token 仅用于快速验证连通性
- 用
ss -tuln | grep 8888确认输出中有*:8888(不是127.0.0.1:8888)
VSCode 中填的连接地址格式必须带 ?token= 和 /api 路径
VSCode 的 Jupyter 扩展不是浏览器,它会主动发起 GET /api/sessions 请求校验服务可用性。路径错、参数少、斜杠多一个都会 404 或 403。
- 标准格式:
http://<your-ip>:8888/?token=<your-token></your-token></your-ip>(注意是问号?,不是斜杠/) - 如果启用了
--base-url=/jupyter,就得写成:http://<your-ip>:8888/jupyter/?token=<your-token></your-token></your-ip> - 不要填
http://<your-ip>:8888/tree</your-ip>或http://<your-ip>:8888/lab</your-ip>—— 这些是前端页面路径,不是 API 入口 - 填完点“连接”,VSCode 控制台(Output → Jupyter)里能看到真实请求和响应,403 说明 token 错,404 说明路径错,Connection refused 说明网络不通
SSH 隧道转发时,localhost 在 Windows 上可能失效
很多人用 ssh -L 8888:localhost:8888 user@host,结果 VSCode 连 http://localhost:8888/?token=xxx 失败。这不是 VSCode 的锅,是 OpenSSH 在 Windows 下对 localhost 的解析不稳定。
- 换成明确 IP:
ssh -L 8889:127.0.0.1:8888 user@host - VSCode 中就填:
http://localhost:8889/?token=xxx - 本地端口(如
8889)建议避开本机已占的8888,避免冲突 - 确认隧道建立后,本地执行
curl -v http://localhost:8889/api/sessions能返回 JSON,再进 VSCode
远程 kernel 必须提前注册,不能靠本地 Python 解释器“自动发现”
VSCode 里点“选择内核”看不到远程环境?不是扩展没装好,是你根本没在远程服务器上把那个环境注册成 kernel。
- 先
conda activate myenv或source venv/bin/activate - 再运行:
python -m ipykernel install --user --name myenv --display-name "Python (myenv)" - 注册后,
jupyter kernelspec list应该能列出myenv - VSCode 连上远程 server 后,右上角选内核才会出现这个名称;不注册,就只有默认的
Python 3(通常指向 base 环境)
最常被忽略的一点:VSCode 的 Jupyter 扩展不会帮你启动远程服务,也不会自动同步 kernel 列表——它只负责发 HTTP 请求和渲染结果。所有服务端配置、端口开放、kernel 注册、token 管理,都得你手动在远程机器上做完,一步都不能少。


















