vscode连不上远程jupyter服务主因是服务端未监听0.0.0.0、缺token或uri格式错误;须用jupyter server启动并配--ip=0.0.0.0、--serverapp.allow_remote_access=true,uri必须含?token=及真实ip,且与jupyter server list输出严格一致。

VSCode 连不上远程 Jupyter 服务,90% 的问题出在远程 jupyter server 没监听对外地址、没配 token、或 VSCode 填的 URL 格式错——不是插件没装好,也不是本地网络问题。
远程必须用 jupyter server 启动,别碰 jupyter notebook
VSCode 自 1.8x 起完全依赖 jupyter_server 协议,jupyter notebook(旧版)返回的 API 路径不兼容,会导致连接后立即断开、404 /api/sessions 或 kernel 不响应。
- 先确认远程已安装
jupyter-server:pip show jupyter-server(不是jupyter-notebook) - 启动命令必须含
--ip=0.0.0.0,否则只监听127.0.0.1,本地 VSCode 根本发不出请求 - 调试阶段可临时清空 token:
--ServerApp.token='';生产环境务必设非空 token - 完整推荐命令:
jupyter server --ip=0.0.0.0 --port=8888 --no-browser --allow-root --ServerApp.allow_remote_access=True --ServerApp.token='abc123' - 启动后运行
jupyter server list,确认输出里有http://0.0.0.0:8888/?token=abc123这类地址
VSCode 里填的 URI 必须带 ?token= 且指向真实 IP
VSCode 的 Jupyter 扩展会主动发 GET /api/sessions 请求校验服务,路径或参数错一个字就 403/404,不会提示“连不上”,只会卡在 connecting 状态。
- 绝对不要填
http://localhost:8888—— 这会让 VSCode 去连自己本机,不是远程服务器 - 必须用服务器真实内网 IP,比如
http://192.168.1.100:8888/?token=abc123 - 如果用了
--base-url=/jupyter,URI 就得是http://192.168.1.100:8888/jupyter/?token=abc123(注意斜杠位置) - 别填
/tree、/lab、/api这类路径结尾——它们不是 API 入口,VSCode 会直接 404 - 填完点“连接”后,打开 Output → Jupyter 面板看真实 HTTP 响应码:403 = token 错,404 = 路径错,Connection refused = 网络不通或端口未监听
SSH 隧道转发时,localhost 在 Windows 上大概率失效
很多人用 ssh -L 8888:localhost:8888 user@host,结果 VSCode 连 http://localhost:8888/?token=xxx 失败。这不是 VSCode 的问题,是 Windows OpenSSH 对 localhost 的解析不稳定。
- 换成
127.0.0.1更可靠:ssh -L 8889:127.0.0.1:8888 user@host - VSCode 中填
http://localhost:8889/?token=abc123(注意端口和隧道一致) - 本地若已有其他 jupyter 占用 8888,隧道端口必须换(如 8889),否则 SSH 会静默失败
- 确保远程
jupyter server是监听0.0.0.0:8888,而不是127.0.0.1:8888——隧道进来后仍无法代理到服务
内核能连上但执行报 Kernel died, restarting
这不是网络或配置问题,是远程 Python 环境和 kernel 注册路径不一致导致的崩溃。VSCode 会把本地选中的解释器路径发过去,而远程根本没有那个路径。
- 千万别在 VSCode 里选 “Python 3.11 (venv)” 这类本地路径解释器——它对远程毫无意义
- 必须在远程服务器上手动注册 kernel:
python -m ipykernel install --user --name myenv --display-name "Python (myenv)" - 注册后重启
jupyter server,再在 VSCode 中重新选择内核(选带(myenv)名字的那个) - 如果用 conda,先
conda activate myenv再运行上面的ipykernel install命令 - 执行单元格前,检查 VSCode 右上角显示的 kernel 名是否和远程
jupyter kernelspec list输出一致
最常被忽略的一点:VSCode 不会自动发现远程服务,也不会扫描端口。你填的每一个字符——IP、端口、?token=、斜杠位置——都必须和 jupyter server list 的输出严格一致。差一个字符,它就安静地卡住,不报错也不连上。











