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

通过PuTTY建立SSH隧道后,浏览器连接远程Jupyter遇101错误的解决方法

我之前也碰到过一模一样的问题,折腾了好一阵才搞定,给你列几个排查和解决的步骤,按顺序试应该能搞定:

第一步:检查PuTTY的SSH隧道配置是否正确

这是最容易出错的环节,一定要仔细核对:

  • 打开PuTTY后,先进入Connection > SSH > Tunnels选项卡:
    • 「Source port」填你本地要用来访问的端口,比如8888
    • 「Destination」必须填localhost:远程Jupyter的端口——比如远程Jupyter跑在8889端口,就写localhost:8889
    • 要选中Local和Auto选项,然后点击「Add」,确保下方的转发列表里出现类似L8888 localhost:8889的条目
    • 注意:必须先配置好隧道,再点击「Open」建立SSH连接;如果已经打开会话再改配置,是不会生效的,得重新开一个会话
第二步:确认远程机器上的Jupyter正在正确运行

隧道通了但Jupyter本身没配置对也白搭:

  • 登录到远程机器,用命令jupyter notebook list查看当前运行的Jupyter服务,确认状态是running,且端口和你隧道里填的目标端口完全一致
  • 启动Jupyter时,必须加上--ip=0.0.0.0参数!Jupyter默认只绑定本地回环地址,即使隧道通了也没法外部访问。正确的启动命令应该是:jupyter notebook --ip=0.0.0.0 --port=8889(端口换成你实际用的)
  • 检查远程机器的防火墙:用telnet localhost 8889在远程机器上测试,如果能连通,说明本地回环访问该端口是允许的;如果连不上,需要调整防火墙规则允许127.0.0.1访问Jupyter端口
第三步:本地机器的排查

本地端口冲突或访问方式错了也会触发重置:

  • 检查本地端口是否被占用:Windows用netstat -ano | findstr :8888,Linux/macOS用lsof -i :8888,如果有其他程序占用,就换一个未被使用的端口(比如8887)
  • 访问时一定要用http://localhost:8888(对应你设置的源端口),不要直接输远程机器的IP——隧道的作用就是把本地端口的请求转发到远程的localhost
  • 用telnet localhost 8888在本地测试连接:如果提示「连接被重置」,说明隧道本身没建立成功;如果是「无法连接」,大概率是PuTTY的隧道配置有误
第四步:进阶排查SSH隧道的连通性

如果前面的步骤都没问题,就需要确认SSH隧道是否真的在工作:

  • 开启PuTTY的日志:进入Connection > SSH > Logging,把日志级别设为「SSH packets」,然后重新连接,查看日志里有没有类似「Local port 8888 forwarding to localhost:8889」的记录,以此确认隧道是否成功建立
  • 在远程机器上用ss -tulpn | grep ssh查看SSH的转发状态,确认是否有对应的转发端口在监听
最后几个容易忽略的坑
  • 远程机器的SSH服务器可能禁用了TCP转发:登录远程机器查看/etc/ssh/sshd_config文件,确保AllowTcpForwarding选项设为yes(或者没有被注释掉),修改后需要重启sshd服务:sudo systemctl restart sshd
  • 如果远程是Windows机器,要确保OpenSSH服务的TCP转发功能是开启的,或者使用支持端口转发的SSH服务器

内容的提问来源于stack exchange,提问作者Dmytro Fedoriuk

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 03:54:42