多层SSH跳转访问远程机器Jupyter Notebook无法打开URL问题求助
问题解答
核心疑问澄清
该问题与机器3未安装浏览器没有任何关联。日志中出现的No web browser found警告仅表示Jupyter服务无法在机器3本地唤起浏览器打开页面,完全不影响远程设备通过网络访问该服务。
无法访问的原因及解决方法
- 多层SSH链路未做端口转发
你当前的访问链路是Windows -> 机器1 -> 机器2 -> 机器3,Jupyter服务运行在机器3的8889端口,默认该端口仅能在机器3本地访问,没有映射到你的Windows设备,所以直接访问机器3IP无法连通。你需要配置多层SSH端口转发,将机器3的8889端口映射到Windows本地的相同端口,操作步骤如下:
- 在Windows本地执行SSH命令连接机器1,添加端口转发规则:
ssh -L 8889:localhost:8889 机器1用户名@机器1IP - 登录机器1后,执行SSH命令跳转连接机器2,添加第二层端口转发规则:
ssh -L 8889:localhost:8889 机器2用户名@机器2IP - 登录机器2后,执行SSH命令跳转连接机器3,添加最后一层端口转发规则:
ssh -L 8889:localhost:8889 机器3用户名@机器3IP
所有转发规则配置完成后,直接在Windows浏览器打开日志中给出的本地访问地址http://localhost:8889/?token=19ced6aaec6f3ff0d9679ab766b893503381c3987e8ab64e即可正常访问Jupyter服务。
- Jupyter默认仅允许本地访问
如果配置端口转发后仍无法访问,可修改机器3的Jupyter启动配置,允许外部IP访问:
编辑~/.bashrc文件,将原有配置修改为:
export PYSPARK_DRIVER_PYTHON=jupyter export PYSPARK_DRIVER_PYTHON_OPTS='notebook --ip=0.0.0.0'
如果使用root账号启动,可以额外添加--allow-root参数。修改完成后执行source ~/.bashrc加载配置,再重新启动pyspark即可。
- 端口被防火墙拦截
分别检查机器3、机器2、机器1的防火墙配置,确保8889端口的入站、出站规则已放开。以ufw防火墙为例,放开端口命令为sudo ufw allow 8889。
内容的提问来源于stack exchange,提问作者Yafei Wei
相关产品推荐
相关产品推荐

