通过 SSH 隧道连接远程服务器的 Jupyter Notebook

参考: https://www.howtoing.com/how-to-install-run-connect-to-jupyter-notebook-on-remote-server

在远程服务器上没有安装浏览器的情况下,通过在本地建立 SSH 隧道的方法使用服务器的 Jupyter Notebook

1. 服务器端

首先确保服务器端安装了 Jupyter Notebook,如果需要使用 conda 环境,还要安装 ipykernel 等包

进入虚拟环境,运行 Jupyter Notebook

1
jupyter notebook

根据输出的信息可以看到无法找到可用的浏览器

1
2
3
4
5
[I 09:56:37.551 NotebookApp] Serving notebooks from local directory: /home/liuxiangyu
[I 09:56:37.551 NotebookApp] The Jupyter Notebook is running at:
[I 09:56:37.552 NotebookApp] http://172.17.0.2:8888/?token=******
[I 09:56:37.552 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
[W 09:56:37.557 NotebookApp] No web browser found: could not locate runnable browser.

注意:如果报错信息提示地址已经被占用,那么久需要修改一下 Jupyter Notebook 的默认地址。修改方式如下:

配置 Jupyter Notebook

1
jupyter notebook --generate-config

运行命令后将会在主目录下生成 .jupyter/jupyter_notebook_config.py 文件,打开文件找到 #c.NotebookApp.ip = 'localhost',把 # 号去掉,localhost 改成自己的 ip 地址(在上面输出信息中可以看到)

保存后关闭文件,重启 Jupyter Notebook 即可

至此,服务器端的准备已经完成了,我们需要记住服务器的地址 172.17.0.2 和端口号 8008

2. 本地

以 Windows 系统为例,下载 putty

  1. 打开 putty 后在服务器地址和端口处正确填写信息,然后在左侧 ssh 选项下选择 Tunnels

  2. Source port 填写本地想用的端口号,以 8000 为例

  3. Destination 填写 服务器地址 172.17.0.2:8888

  4. 其他选项不要修改,最后不要忘记点击 Add,然后连接即可

连接到服务器后进入相应的虚拟环境,运行 Jupyter Notebook,然后打开浏览器输入地址 https://localhost:8000 即可打开 notebook. 第一次进入 notebook 可能需要输入 token,按照提示输入相应的 token 即可

Done! 😎