在网上查找了很多资料,试了很多方法,踩了不少坑,现在记录下最终的可行方案。
主要参考这2篇:https://cloud.tencent.com/developer/article/1488507
https://www.cnblogs.com/qiangzi0221/p/8933722.html
1、生成配置文件,有的服务器是已经生成了配置文件,这步就可以省略。root用户需要加上--allow-config.
$:jupyter notebook --generate-config # jupyter notebook --generate-config --allow-config
2、生成密钥,打开python解释器
$:python
>>>from notebook.auth import passwd
>>>passwd()
#输入新的登陆密码(本地访问的时候使用)
#再次确认
#生成key,复制留存并修改到配置文件中去
比如我生成的key是 : 'sha1:69a5200a8cca:fc886d755620d9ddaec077439ca272fg048ec416'
3、采用 SSL 加密通信
输入下面的命令,会让你输入一些地理位置信息,这些可以随便填
$:openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout mykey.key -out mycert.pem
完成后输出以下命令
$:jupyter notebook --certfile=mycert.pem --keyfile mykey.key
4、修改配置文件,就是第一步中生成的配置文件的路径。
$:vim ~/.jupyter/jupyter_notebook_config.py
在配置文件中修改 或者直接添加:
# 证书的信息
c.NotebookApp.certfile = u'/absolute/path/to/your/certificate/mycert.pem'
c.NotebookApp.keyfile = u'/absolute/path/to/your/certificate/mykey.key'
# ip 设置为 *
c.NotebookApp.ip = '*' # 这里设置成'0.0.0.1' 也可以 我就是这样的 或者 '服务器IP'
c.NotebookApp.password = u'sha1:bcd259ccf...<your hashed password here>'
c.NotebookApp.open_browser = False # 不打开浏览器,后台运行
# 设置一个固定的接口
c.NotebookApp.port = 80
5、最后一步,在服务端开启notebook
$ jupyter notebook
6、 此时notebook已经打开,回到自己本机,需要先建立一次ssh连接,不然有的服务器会拒绝
$:ssh username@address -L 127.0.0.1:1234:127.0.0.1:8888
$:ssh username@address -p 800 -L 127.0.0.1:1234:127.0.0.1:8888
username是你远程服务器账号的名字,address是服务器的ip地址 ,如果服务器开放端口不是默认的22 ,比如是800,那就在adress后面添加 -p 800
现在就可以在自己浏览器中输入
localhost:1234
直接访问远程的jupyter notebook
了 或者 127.0.0.1:1234。
另外,windows用户无法用cmd使用ssh话,参考我这篇配置下ssh服务。
window 下用cmd使用ssh 教程(踩的坑总结):https://blog.csdn.net/qq_26593695/article/details/104533592