在網上查找了很多資料,試了很多方法,踩了不少坑,現在記錄下最終的可行方案。
主要參考這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
uername是你遠程服務器賬號的名字,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