【问题标题】:Jupyter notebook SSH tunnel for two step ssh tunnel用于两步 ssh 隧道的 Jupyter notebook SSH 隧道
【发布时间】:2019-08-07 13:25:42
【问题描述】:

我想通过 SSH 隧道访问一个 jupyter notebook 并遵循这个秘诀

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 notebook 只安装在 my_pc_name 上。

当我用更长的登录过程替换第一步的第一行时,我为第二步写什么?

当我插入时 remote_user = username 和 remote_user = my_pc_name,我从 jupyter 笔记本中收到一个安全错误,要求提供令牌。我从第一步获得的令牌,运行 jupyter notebook 将不起作用。


一种解决方案是将两个 ssh 登录步骤合二为一。

【问题讨论】:

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


    【解决方案1】:

    似乎“服务器”是您的网关服务器,而“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 notebook 服务器。

    最后在本地机器上打开浏览器并访问: localhost:8888

    您的 ssh 连接字符串中确实有 -X 选项,它表示 X11 窗口(一种用于 linux 的远程桌面)。试着放下它,看看它是否仍然有效,否则你可能不得不保留它。另外,-K 表示转发 Kerberos 票证,您可能需要允许文件访问,所以我保留了它。

    您可能需要在您的机器上同时使用这些组合才能使其正常工作。

    【讨论】:

    • 谢谢,但在这种情况下,Host-C 是什么。在 ssh 的第二步中,我不使用其他服务器 (@server)。
    • 发生的事情(我认为)是您在两步连接过程中的第一个命令ssh -X username@server 将您从本地电脑(主机-B,服务器)连接到跳转服务器(主机-B,服务器) A,本地主机)。在那里,您运行 ssh -KX my_pc_name,它将您连接到 Host-C,my_pc_name。
    • 好的,但是这里的 Host-C 是什么?在 ssh -KX my_pc_name 中没有@符号。
    • Host-C 是 my_pc_name。它不会出现@符号,因为假设您已经使用用户名登录@server,它将使用与my_pc_name相同的用户名。
    • 通过实际尝试的步骤扩展了答案。
    【解决方案2】:

    虽然我们从 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 上测试。

    【讨论】:

      猜你喜欢
      • 2021-02-17
      • 1970-01-01
      • 1970-01-01
      • 2020-07-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-20
      相关资源
      最近更新 更多