如何通过本地计算机上的远程服务器运行jupyter笔记本?

Mah*_*esh 35 remote-access remote-server jupyter-notebook

我可以从我的大学远程访问远程服务器,并且我正在通过本地计算机访问它!但是,我的本地计算机没有足够的内存来运行多个 jupyter 笔记本。有什么方法可以通过远程服务器运行它们,这可能会加快任务速度!但我不太确定!

我从 macOS 中的终端访问服务器。谢谢!!

nih*_*lok 84

这里有一个非常好的教程

本质上,您只需在无浏览器模式下在远程运行笔记本即可。

jupyter notebook --no-browser --port=8080
Run Code Online (Sandbox Code Playgroud)

然后从本地计算机设置 ssh 隧道:

ssh -L 8080:localhost:8080 <REMOTE_USER>@<REMOTE_HOST>
Run Code Online (Sandbox Code Playgroud)

然后在本地浏览器中访问:http://localhost:8080/

编辑:

不需要在特定端口上运行。标签--no-browser是。

  • 提及第二步是在本地计算机上会很有用,谢谢! (3认同)

小智 15

我想您可能正在寻找端口转发。

例如,当您通过 ssh 登录远程时,您可以:

  1. 在远程计算机上,从当前目录启动 jupyter notebook 并指定端口:

    jupyter notebook --no-browser --port=9999
    
    Run Code Online (Sandbox Code Playgroud)
  2. 在本地计算机上,捕获转发的端口:

    ssh -NfL localhost:9999:localhost:9999 your_user_name@remote_ip_address
    
    Run Code Online (Sandbox Code Playgroud)
  3. http://localhost:9999。您应该能够选择您的笔记本,然后就可以开始了。


Jan*_*i D 10

jupyter notebook --no-browser --ip="<remote server ip>"您可以在远程机器终端上运行。并从本地计算机上的浏览器使用 http://:8888/?token=<> 访问笔记本。

  • 这正是我在 Windows 10 上运行 haskell 内核并在 wsl 中运行 jupyter 笔记本所需要的 (2认同)

abd*_*lek 8

我们假设本地用户localuser和主机为localhost,远程用户和远程主机为remoteuserremotehost。要从本地计算机在远程服务器上运行 Jupyter 笔记本,您可以按照以下步骤操作。

  1. 在远程计算机上运行 Jupyter 笔记本并--no-browser指定端口

    jupyter notebook --no-browser --port=XXXX
    
    Run Code Online (Sandbox Code Playgroud)
  2. 通过 SSH 将其转发到本地计算机

    ssh -N -f -L localhost:YYYY:localhost:XXXX remoteuser@remotehost
    
    Run Code Online (Sandbox Code Playgroud)
  3. 打开浏览器并转到http://localhost:YYYY

您可能需要关闭连接

  • CTRL+C然后停止正在运行的笔记本y

  • 终止在端口上运行的进程YYYYnetstat返回进程 ID (PID)

     sudo netstat -lpn | grep :YYYY -> for LINUX
     sudo netstat -anv | grep YYYY -> for MacOS
    
     kill PROCESS_ID
    
    Run Code Online (Sandbox Code Playgroud)


小智 6

要使用浏览器访问远程计算机,笔记本电脑必须侦听面向外部的端口(而不是本地主机)。如果想在容器上运行 Jupyter 笔记本,您将需要相同的调用。在这种情况下,它是这样的:

jupyter notebook --no-browser --port=8080 --ip=0.0.0.0
Run Code Online (Sandbox Code Playgroud)

要仅在本地主机中监听,则可以省略 IP

jupyter notebook --no-browser --port=8080
Run Code Online (Sandbox Code Playgroud)

要远程访问其他答案中的 ssh 隧道选项,是可行的。每个笔记本都需要一个 SSH 隧道。如果您需要运行多个笔记本,另一个选择是使用该sshuttle工具通过 SSH 模拟 VPN,这样您就不必创建多个隧道。使用选项运行sshuttle可以完全访问远程计算机的网络(例如 10.250.100.40/24),或者您可以运行它以通过远程计算机转发所有流量(如传统 VPN)。

# forward all traffic to network of remote server over the SSH VPN
sshuttle --dns -NHr username@sshserver 10.250.100.40/24

# forward all traffic through the remote server over the SSH VPN
sshuttle --dns -NHr username@sshserver 0/0
Run Code Online (Sandbox Code Playgroud)

注意:DNS 标志对于能够使用远程计算机 DNS 进行名称解析非常重要。

然后执行笔记本来监听外部端口。例如,运行 3 个笔记本。

jupyter notebook --no-browser --port=8080 --ip=0.0.0.0
jupyter notebook --no-browser --port=8081 --ip=0.0.0.0
jupyter notebook --no-browser --port=8082 --ip=0.0.0.0
Run Code Online (Sandbox Code Playgroud)

运行笔记本进行身份验证时,您将在输出上使用令牌。它将像这样显示输出

http://server.example.com:8080/tree?token=dd9024f1fb68434645d3902d161f41720650644dc5832f16
Run Code Online (Sandbox Code Playgroud)

假设远程服务器没有阻止到这些端口的流量,那么在您的本地计算机上,就像打开浏览器一样简单

http://<name-of-remote-machine>:8080/tree?token=<your-token>
http://<name-of-remote-machine>:8081/tree?token=<your-token>
http://<name-of-remote-machine>:8082/tree?token=<your-token>
Run Code Online (Sandbox Code Playgroud)