原创

Linux服务器配置可远程操作的Jupyter-notebook


1.前期准备工作

服务器端安装Anaconda,安装好jupyter-notebook

2.jupyter notebook配置文件

2.1 第一步先生成jupyter-notebook配置文件

jupyter notebook --generate-config

2.2 第二步修改配置文件jupyter_notebook_config.py

打开生成的配置文件,一般是在~/.jupyter,你可以利用vi直接进行修改,也可以利用WinSCP或Xftp远程连接服务器以记事本的形式打开jupyter_notebook_config.py进行编辑。若你是以记事本的形式编辑,按“ctrl+f”进行【查找】下列的位置:

c.NotebookApp.allow_remote_access = True          // 表示允许外部访问
c.NotebookApp.ip='*'                              // 修改为‘*’,表示允许所有IP访问
c.NotebookApp.token = ''                          // 取值设为空,取消登录密码
c.NotebookApp.password = ''                       // 自己设置jupyter-notebook登陆密码
c.NotebookApp.open_browser = False                // 禁止自动打开浏览器
c.NotebookApp.port = 9901                         // 设置一个notebook服务监听的IP端口
c.NotebookApp.notebook_dir = u'/home/me/ipython'  // 分配的打开路径

【说明】一定要将每一句前面的注释“#”去掉,否则无法读取。

3.若设置jupyter登陆密码,可以参考下面

jupyter-notebook可以通过:密码登录、token登录、免密登录三种方式登录。现在介绍的是如何设置jupyter密码,在终端输入ipython,让服务器可以执行python代码,利用passwd()生成一个hash密码:

In [1]: from notebook.auth import passwd
In [2]: passwd()
Enter password:
Verify password:
Out[2]: 'sha1:67c9e60bb8b6:9ffede0825894254b2e042ea597d771089e11aed'

两次输入密码在终端是无法显示出来的,将整段hash密码复制下来,存放上面的进配置文件c.NotebookApp.ip='*'中。

4.在服务器上运行jupyter-notebook

jupyter notebook --port 9901      // 这里分配的是9901端口号

5.最后一步

5.1 【方案一】任何ip直接在浏览器上访问(存在安全风险)

在服务器终端输入下列语句:

firewall-cmd --zone=public --add-port=9901/tcp --permanent  // 放行服务器9901端口
systemctl restart firewalld.service                         // 重启服务器防火墙

【说明】linux服务器如果不是root权限,无法管理防火墙配置,因此还是建议采取方案二。

5.2 【方案二】建立SSH通道,仅让本地计算机访问(较安全)

在本地计算机的cmd中输入下面语句:

ssh -N -f -L localhost:9213:localhost:9901 -p 6000 用户名@服务器ip地址

【说明】

  • 9213:指本地计算机分配的端口号
  • 9901:指linux服务器分配给jupyter-notebook的端口号
  • 6000:指linux服务器ssh的端口号
  • 用户名@服务器ip地址:linux服务器的信息

语句输入之后,还会让你输入你的服务器登录密码。

6.远程登录jupyter-notebook

在本地计算机的浏览器中输入:http://服务器ip地址:端口号/ 或 http://localhost:端口号/

7.【问题一】ERR_TIME_OUT:浏览器默认非安全端口

搭建项目时需要自己配置端口信息,但是有人搭建之后会出现ERR_TIME_OUT的错误,这是因为:chorme浏览器有自己的默认非安全端口组,若访问这些端口就会出现这个错误,并且所有采用chorme内核的浏览器都会这样。解决方案是更换自己项目的端口,这里列出所有chorme的默认非安全端口,请大家在搭建项目时避免使用这些端口:

1, // tcpmux 
7, // echo 
9, // discard 
11, // systat 
13, // daytime 
15, // netstat 
17, // qotd 
19, // chargen 
20, // ftp data 
21, // ftp access 
22, // ssh 
23, // telnet 
25, // smtp 
37, // time 
42, // name 
43, // nicname 
53, // domain 
77, // priv-rjs 
79, // finger 
87, // ttylink 
95, // supdup 
101, // hostriame 
102, // iso-tsap 
103, // gppitnp 
104, // acr-nema 
109, // pop2 
110, // pop3 
111, // sunrpc 
113, // auth 
115, // sftp 
117, // uucp-path 
119, // nntp 
123, // NTP 
135, // loc-srv /epmap 
139, // netbios 
143, // imap2 
179, // BGP 
389, // ldap 
465, // smtp+ssl 
512, // print / exec 
513, // login 
514, // shell 
515, // printer 
526, // tempo 
530, // courier 
531, // chat 
532, // netnews 
540, // uucp 
556, // remotefs 
563, // nntp+ssl 
587, // stmp? 
601, // ?? 
636, // ldap+ssl 
993, // ldap+ssl 
995, // pop3+ssl 
2049, // nfs 
3659, // apple-sasl / PasswordServer 
4045, // lockd 
6000, // X11 
6665, // Alternate IRC [Apple addition] 
6666, // Alternate IRC [Apple addition] 
6667, // Standard IRC [Apple addition] 
6668, // Alternate IRC [Apple addition] 
6669, // Alternate IRC [Apple addition]

8.【问题二】成功获取界面,但输入密码后报404错误

出现这个情况的错误,大部分情况是因为找不到配置文件中c.NotebookApp.notebook_dir所对应的目标路径,填写的路径在实际的linux服务器中不存在,重新填写写的路径或者在服务器中的对应位置创建好文件就可以解决。

9.【问题三】完成配置后“无变化”,无法登录

可能存在文件jupyter_notebook_config.json,因为它拥有更高的优先级,每当开启jupyter-notebook时都会先以这个文件为主,这就意味着刚才配置的jupyter_notebook_config.py文件无效了,此时,你可以选择删除.json文件再重新开启便会成功登录。

10.后台挂起操作

nohup jupyter notebook --port 9901 &
Linux
  • 作者:李延松(联系作者)
  • 发表时间:2020-11-25 12:41
  • 版本声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)
  • 公众号转载:请在文末添加作者公众号二维码

评论

留言