背景
因为假期回不去学校,需要远程使用实验室的GPU。但是实验室的服务器没有直接暴露在公网上,所以选择ssh端口转发的方式连接,更有安全性
服务器端配置
第一步,在服务器端安装jupyter notebook,此处不再赘述。
第二步,生成jupytert notebook的配置文件
jupyter notebook --generate-config
第三步,生成加密的密码,使用命令
jupyter notebook password
两次确认后,密码会被保存到~/.jupyter/jupyter_notebook_config.json
中
接下来修改配置jupyter notebook相关的配置文件
sudo vim ~/.jupytet/jupyter_notebook_config.py
重要的配置如下,
c.NotebookApp.ip='localhost' #想使用网站直连,要修改为0.0.0.0
## 本地访问目录, 不设置的话就是启动命令所在的目录
c.NotebookApp.notebook_dir = '$HOME/jupyter_data'
## 是否需要自动弹出浏览器,服务器端一般不需要
c.NotebookApp.open_browser = False
c.NotebookApp.port = 9999 # 为了安全性,应该修改
接下来将jupyter notebook转为后台运行
使用命令nohup jupyter notebook > jupyter.log 2>&1 &
在后台启动
本地通过ssh端口转发连接notebook
在终端中输入如下命令
ssh -N -f -L localhost:8888:localhost:9999 remote_name@host_ip
其中, -N 告诉SSH没有命令要被远程执行; -f 告诉SSH在后台执行; -L 是指定port forwarding的配置,远端端口是9999,本地的端口号的8888
在启动命令之后,可以在本地浏览器输入http://localhost:8888/来访问
搞定!