本文参考了 link,并做了适合自己的修改。
远程服务器端
-
生成jupyter notebook配置文件(终端输入命令)
jupyter notebook --generate-config
-
配置密码 (终端打开ipython/python,输入两行命令)
from notebook.auth import passwd
passwd()input自己想要设置的密码,之后会自动返回一个密码序列,复制下来,第四步用
-
配置密码生成ssl证书(最后需要用https登录jupyter), 进入想要保存证书的目录内,粘贴以下命令
openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout mykey.key -out mycert.pem
-
修改jupyter配置文件
vim ~/.jupyter/jupyter_notebook_config.py
对以下几行做如下修改:
c.NotebookApp.password=u'sha1:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' // (注:XXXXXXXXXXXXXXXXXXXXXXX 为第2步中生成的密码序列) c.NotebookApp.certfile = u'/absolute/path/to/your/certificate/mycert.pem' c.NotebookApp.keyfile = u'/absolute/path/to/your/certificate/mykey.key' //(注:为第3步中生成的mycert.pem和mykey.key两个文件的绝对路径,可用pwd查看) c.NotebookApp.ip = '*' c.NotebookApp.open_browser = False c.NotebookApp.port = 8889 //自己可以设定成别的 c.NotebookApp.notebook_dir = u'/home/me/ipython' # 指定工作目录(可以不指定,在哪里运行命令,就在哪里工作)
:x 或者 :wq! 保存并退出
-
在服务器上运行jupyter Notebook
nohup jupyter notebook --no-browser --port=8888 --ip=0.0.0.0 –allow-root > /usr/local/myout.log 2>&1 &
nohup不挂断的运行,可以使命令永久运行下去,和用户终端没有关系,关闭终端不会影响它的运行;no-browser是指不在服务器上使用浏览器;port可以设置成任何空闲的端口号(上一步的配置文件中我把默认端口号8888改改为了8889,这里用8888依然可以);ip如果不设置为0.0.0.0我的服务器会报错:OSError: [Errno 99] Cannot assign requested addres;[-u表示无缓冲输出(执行程序后的输出内容)暂时不加-u];–allow-root 如果不是root用户,就不用写;>将nohup默认的输出重定向到指定文件;2>&1用来将标准错误2重定向到标准输出1中;&是指在后台运行,和nohup配合使用,使命令永久在后台执行,最后可以用kill -9 进程号 结束程序
终端查看程序进程号
pgrep jupyter
本地端
本地打开https: //服务器ip:8889
注意:因为生成了key,cert这些东西,所以必须用https访问。
-----------------------------------------下面方法弃用-----------------------------------------
-
打开Xshell,选择与该服务器的连接会话,右键,点属性然后添加隧道,设置端口号全部为8889,写上说明"远程使用jupyter notebook"
设置完成后,打开会话,就可以用https : //localhost:8889访问jupyter了。 -
本地和服务器端口映射
ssh username@server_ip -L127.0.0.1:8000:127.0.0.1:8888
username就是在服务器上开设的用户名,server_ip就是服务器的IP,至于“-L127.0.0.1”中为什么是127.0.0.1我也不太清楚(L和127之间没有空格),然后就是将本地的8000端口映射到服务器端的8888端口,也就是jupyter notebook使用的端口
-
本地浏览器打开服务器上的Jupyter Notebook
在本地的浏览器里输入https://127.0.0.1:8000,回车,自动跳转到输入密码页面,输入第2步中自己设置的密码(注意不是返回的那个密码序列),就可以打开服务器上的Jupyter Notebook了,开始使用吧!