两步SSH隧道的Jupyter Notebook SSH隧道

时间:2019-03-16 18:11:25

标签: python-3.x ssh jupyter-notebook

我想通过SSH隧道访问jupyter笔记本并遵循此食谱

https://hsaghir.github.io/data_science/jupyter-notebook-on-a-remote-machine-linux/

总结-: 1.登录远程计算机

user@local_host$ ssh user@remote_host

remote_user@remote_host$ jupyter notebook --no-browser --port=8889

2。在新终端中:

user@local_host$ ssh -N -L localhost:8888:localhost:8889 remote_user@remote_host

3。然后转到浏览器并转到

localhost:8888

现在这是我的问题: 我只能通过两个步骤访问远程机器

ssh -X username@server

ssh -KX my_pc_name

并且jupyter笔记本仅安装在my_pc_name上。

当我用较长的登录过程替换第一步的第一行时,该如何写第二步?

当我插入电源时 remote_user =用户名和remote_user = my_pc_name ,我从jupyter笔记本电脑获取令牌时遇到安全错误。我从第一步运行的jupyter笔记本获得的令牌不起作用。


一种解决方案是将两个ssh日志逐步合并为一个。

2 个答案:

答案 0 :(得分:2)

似乎“服务器”是您的网关服务器,并且“ my_pc_name”只能从那里访问。尝试像这样建立两个连接的ssh隧道:

https://medium.com/@sankarshan7/how-to-run-jupyter-notebook-in-server-which-is-at-multi-hop-distance-a02bc8e78314

所以我会这样做。打开终端并运行:

ssh -f username@server -L 8888:localhost:8889 -N

这会将您的本地计算机连接到跳转服务器并进行端口转发。

然后打开一个新终端并运行:

ssh username@server
ssh -f my_pc_name -L 8889:localhost:8889 -N -K

这应该将您连接到跳转服务器,并在跳转服务器和my_pc_name之间进行端口转发。

然后打开另一个终端并运行:

ssh -X username@server
ssh -KX my_pc_name
jupyter notebook --no-browser --port=8889

这将使您连接到my_pc_name并在其中运行jupyter笔记本服务器。

最后转到本地计算机上的浏览器并访问: localhost:8888

您的ssh连接字符串中确实有-X选项,它表示X11窗口(Linux的一种远程桌面)。尝试删除它,看看它是否仍然有效,否则您可能必须保留它。另外,-K表示转发Kerberos票证,您可能需要允许该票证访问文件,因此我保留了它。

您可能必须在计算机上同时使用这些功能才能使它正常工作。

答案 1 :(得分:1)

尽管Kai给出了一个很好的答案,但它可能会使某些人感到困惑。至少我有一些问题。

为了建立从服务器到Jupyter Notebook / Lab的本地计算机的连接,我们需要在本地计算机上打开三个终端窗口

请按照顺序进行。

第一个终端窗口:

ssh -f username1@gateway_server -L :7001:localhost:7001 -N -v -v

不要关闭第一个终端!

第二个终端窗口:

ssh username1@gateway_server
ssh -f username2@working_server -L 7001:localhost:7001 -N -K -v -v

不要关闭第二个终端!

第三终端窗口:

ssh -X username1@gateway_server
ssh -KX username2@working_server
jupyter lab --no-browser --port=7001&

在本地计算机上后,转到浏览器:http:// localhost:7001 /

在Mac上经过测试。