Jupyter Notebook远程访问 ssh通道建立

使用《Running a notebook server》上的方式,总是出问题。配置jupyter_notebook_config.py文件,明明按照官网上说的配置的,无缘无故的Jupyter Notebook无法启动等问题。或者是远程无法访问。

一气之下,

$ rm -rf ~/.jupyter

现在整个世界都清净了。

我使用了另外一种方式远程访问Jupyter Notebook,主要分为两步(以下服务器IP地址为192.168.1.2,用户名为qingdujun):

Run Jupyter Notebook

启动Jupyter Notebook时,先指定一个端口,如果端口被占用了,会自动切换成其他的端口。这里指定的是8888端口,结果被占用了,系统给另外分配了8889端口。另外需要注意的是,根据下面的log信息,系统还给出了一个token,这个是用于远程登录时使用的。

$ ssh qingdujun@192.168.1.2                            # ssh远程登录
$ conda activate pytorch
(pytorch)$ jupyter notebook --no-browser --port=8888 & # 启动jupyter notebook(远程服务器)

[I 16:46:49.335 NotebookApp] 端口 8888 已经被站用, 请尝试其他端口.
[I 16:46:49.356 NotebookApp] JupyterLab extension loaded from /home/qingdujun/Applications/anaconda3/lib/python3.7/site-packages/jupyterlab
[I 16:46:49.356 NotebookApp] JupyterLab application directory is /home/qingdujun/Applications/anaconda3/share/jupyter/lab
[I 16:46:49.357 NotebookApp] 启动notebooks 在本地路径: /home/qingdujun
[I 16:46:49.357 NotebookApp] 本程序运行在: http://localhost:8889/?token=c52c1e4bcc0f8336382d689456d775de1c0b3380a0f741e4
[I 16:46:49.357 NotebookApp] 使用control-c停止此服务器并关闭所有内核(两次跳过确认).
[C 16:46:49.359 NotebookApp]

To access the notebook, open this file in a browser:
file:///run/user/1000/jupyter/nbserver-3323-open.html
Or copy and paste one of these URLs:
http://localhost:8889/?token=c52c1e4bcc0f8336382d689456d775de1c0b3380a0f741e4

ssh 通道建立

将本地的8888端口与服务器上的8889端口关联起来,形成端口转发,这样就像在本地操作一样。

注意: 以下ssh请在本地电脑上执行。如果出现bind: Address already in use,直接killall ssh重来即可,或者换一个端口。

$ ssh -N -f -L localhost:8888:localhost:8889 qingdujun@192.168.1.2  # 本地执行

其中: -N 告诉SSH没有命令要被远程执行; -f 告诉SSH在后台执行; -L 是指定端口转发的配置,本地的端口是8888,远端端口是8889。

当然,本地端口和远程端口可以不一样。

Open url

最后,从浏览器中打开网址http://localhost:8888/ ,填入token(上面的log中有)完成登录。

References:
[1] 远程访问服务器Jupyter Notebook的两种方法
[2] ssh配置以及远程文件传输
[3] SSH原理与运用(一):远程登录
[4] SSH原理与运用(二):远程操作与端口转发