0 前言
不是很习惯通过MobaXterm编辑实验室服务器上的文件,于是决定在实验室服务器上配置Jupyter notebook,方便之后的实验,搜索到的教程比较老了,于是决定自己写一篇教程,备忘。
以下笔记,需要Linux已完成的前提:
- Linux服务器已完成Anaconda3的安装
- 使用Anaconda3创建虚拟环境(本文以Python3.8的虚拟环境为例)
- 知晓外网访问Linux服务器的远程地址和端口
本博客参考综合了以下博客:
- Linux 服务器上部署搭建 Jupyter notebook【详细教程】
- anaconda配置远程访问jupyter,并创建虚拟环境
- Jupyter Notebook 7.0 更新远程访问配置
- jupyter notebook远程连接服务器(终于彻底解决了)
1 在服务器端的操作
1.1安装Jupyter
启动虚拟环境,通过以下命令安装Jupyter。
conda install jupyter
1.2 在服务器:配置Jupyter远程访问
为了远程访问Jupyter,需要通过如下命令手动生成配置文件。
jupyter notebook --generate-config
配置文件jupyter_notebook_config.py默认生成在当前目录,即…/.jupyter/jupyter_notebook_config.py。
再使用Python通过如下代码配置jupyter密码,不加密的话是不允许通过远程访问的。
from jupyter_server.auth import passwd;
passwd(algorithm='sha1')
输入上述代码后,会在命令框中提示输入密码,并生成相应的Hash密码(用于配置jupter文件):
In [1]: from notebook.auth import passwd
In [2]: passwd()
Enter password:******(自己设置密码!)
Verify password:******
Out[2]:'sha1:xxxxxxxx'
使用MobaXterm或Vim编辑器打开之前的配置文件(…/.jupyter/jupyter_notebook_config.py),添加如下配置:
c.ServerApp.ip = '*' # 允许所有IP地址进行访问
c.ServerApp.password = u'xxxxxxxx' # 刚才生成的Hash密码
c.ServerApp.open_browser = False
c.ServerApp.port = 8989 # 可以自定义,需要记住
c.ServerApp.allow_remote_access = True
1.3 Jupyter,启动!
jupyter notebook --no-browser --port=8989
2 在自己的电脑
在PowerShell或CMD通过SSH命令把本机地址和端口改成服务器的地址和端口:
ssh -N -f -L localhost:8888:localhost:8989 -p PORT1 USER@XXX.XXX.XXX.XXX
上述命令四个需要自定义的地方:
- 第二个localhost 这里的8989是因为在1.2中我将ServerApp.port设置为8989,具体需要看自己定义的是哪个端口。
- PORT1 这里需要指定服务器允许远程访问的端口,比如我们实验室是XXXX(找导师或者师兄师姐去问吧!)
- USER 你登陆服务器的用户名(找导师或者师兄师姐去问吧!)
- XXX.XXX.XXX.XXX 服务器远程访问的地址(找导师或者师兄师姐去问吧!)
然后输入你远程访问服务器的密码(不是1中设置的jupyter的密码!我是师兄帮我配置的密码,所以还是——找导师或者师兄师姐去问吧!)
USER@XXX.XXX.XXX.XXX's password:********
最后打开浏览器,在网址栏输入:
http://127.0.0.1:8888/
就可以远程访问服务器上的Jupyter notebook啦!