You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SSH隧道访问远程Jupyter Lab无法连接如何修复

Jupyter Lab SSH端口转发访问失败排查方案

按从服务端到本地链路的顺序逐段排查,覆盖绝大多数同类故障:

1. 校验远程服务器端Jupyter服务状态

首先登录远程服务器做两项检查:

  • 执行ps aux | grep jupyter确认Jupyter进程存活,如果进程不存在,说明之前启动的服务随SSH会话退出被回收了,重新启动时建议用nohup挂后台避免会话断开被杀:
    nohup jupyter lab --no-browser --port=8889 --ip=127.0.0.1 > jupyter_running.log 2>&1 &
    
  • 在远程服务器本地执行curl http://localhost:8889,如果返回Jupyter页面对应的HTML代码,说明服务本身运行正常;如果返回连接拒绝,检查8889端口是否被其他进程占用(执行ss -tulpn | grep 8889查看端口占用),换空闲端口重启Jupyter即可。

2. 校验本地SSH隧道连通性

回到本地机器检查隧道状态:

  • 先确认本地8888端口的监听状态:
    • Mac/Linux系统执行:lsof -i :8888
    • Windows系统(PowerShell/CMD)执行:netstat -ano | findstr :8888
      如果查询结果没有显示SSH进程监听8888端口,说明之前的隧道建立命令执行失败,常见原因和修复方式:
    • 本地8888端口被其他服务(比如本地运行的Jupyter、Web服务)占用,修改隧道命令换个本地空闲端口即可,比如将本地转发端口换成8890:
      ssh -N -f -L localhost:8890:localhost:8889 <my_username>@<remote_server_public_ip>
      
      后续访问对应换为localhost:8890即可。
    • 远程服务器修改过SSH默认端口(非22端口),隧道命令漏加-p 你的SSH端口参数,补全参数后重新建立隧道即可。
    • 远程SSH服务禁用了TCP转发,去掉隧道命令的-f -N参数,加-v参数前台运行看详细报错:
      ssh -v -L localhost:8888:localhost:8889 <my_username>@<remote_server_public_ip>
      
      如果日志出现administratively prohibited类报错,需要修改远程服务器的/etc/ssh/sshd_config配置,将AllowTcpForwarding参数设为yes,保存后重启sshd服务再重建隧道。
  • 如果本地8888端口正常被SSH监听,在本地执行curl http://localhost:8888测试,能返回HTML内容说明链路完全正常,此时访问失败是浏览器侧问题:关闭浏览器代理插件(把localhost加入代理绕过列表)、用浏览器无痕模式访问即可。

3. 易忽略的注意点

  • 走SSH本地端口转发时,流量是通过SSH隧道传输到远程的127.0.0.1,不需要在远程服务器防火墙、云服务商安全组开放8889端口,开放该端口反而会带来未授权访问风险。
  • 隧道建立后如果网络波动、本地/远程设备休眠,可能导致SSH隧道僵死,此时查端口可能显示在监听但实际不通,直接杀掉本地残留的SSH隧道进程,重新执行隧道建立命令即可。

内容的提问来源于stack exchange,提问作者Dr. Prof. Patrick

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 20:09:11