我想通过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日志逐步合并为一个。
答案 0 :(得分:2)
似乎“服务器”是您的网关服务器,并且“ my_pc_name”只能从那里访问。尝试像这样建立两个连接的ssh隧道:
所以我会这样做。打开终端并运行:
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上经过测试。