远程使用 Jupyter notebook 调试端口转发

Debug port forwarding for using Jupyter notebook remotely

我正在尝试在远程计算机上使用 Jupyter notebook。设置如下:我有我的家用笔记本电脑,它可以通过 ssh 连接到我大学网络上的特定计算机(例如,gateway.myuniv.edu)。一旦我登录到 gateway.myuniv.edu,我就可以通过 ssh 连接到我想要 运行 Jupyter notebook 服务器的计算机(例如 cluster.myuniv.edu)。

有效方法:我可以运行网关上的服务器并使用本地端口转发从我的笔记本电脑连接到它,如下所示:

gateway.myuniv.edu 上:$ jupyter notebook --no-browser --port 8888

在我的笔记本电脑上:$ ssh -v -N -L 9000:localhost:8888 myusername@gateway.myuniv.edu

然后在笔记本电脑的浏览器上,我打开 url:http://localhost:9000

什么不起作用:我不想 运行 网关上的服务器,因为我不能在那里进行大量计算。我尝试执行以下操作:

cluster.myuniv.edu 上:$ jupyter notebook --no-browser --port 8888

在我的笔记本电脑上:$ ssh -v -N -L 9000:cluster.myuniv.edu:8888 myusername@gateway.myuniv.edu

然后在笔记本电脑的浏览器上,我打开 url:http://localhost:9000。这不起作用:SSH 表示连接被拒绝。

我不明白为什么会发生这种情况以及如何调试它,很乐意提供任何帮助。谢谢!

问题是您将 cluster.myuniv.edu 上的端口 :8888 转发到 gateway.myuniv.edu 上的端口 :9000,然后转发 gateway.myuniv.edu 上的端口 :8888 =] 到您笔记本电脑上的 9000 端口。

解决方案如下:

在 cluster.myuniv.edu 上:$ jupyter notebook --no-browser --port 8888

在 gateway.myuniv.edu 上:$ ssh -v -N -L 8888:localhost:8888 myusername@cluster.myuniv.edu

在笔记本电脑上:$ ssh -v -N -L 9000:localhost:8888 myusername@gateway.myuniv.edu

我还建议您 运行 使用 Tmux 或 Screen 的 Jupyter notebook(在集群上)和 ssh 隧道(在网关上),这样即使您关闭终端也能保持活动状态