需求
为了在远程服务器上运行python程序。主要是因为服务器长期运行,一些下载数据的程序可以在服务上跑,不影响客户机的使用,尽可能提高服务器的使用率。
当然也可以直接使用.py文件。但使用notebook比较方便。
解决
1. 在服务器上安装miniconda.
下载好.sh文件。
bash MinicondaXXXX.sh
2. 在服务器上设置jupyter notebook
我是先单独安装的jupyter notebook,后来才安装的miniconda,如果先安装miniconda也许notebook可以立刻运行了。
jupyter notebook --generate_config
jupyter notebook password
必须先生成配置文件,然后设置密码,才能支持远程连接。
运行jupyter notebook,可以指定一个端口,并且不需要开启浏览器。
jupyter lab --port=9000 --no-browser &
3. 在本机上开启ssh隧道
通过以下命令开启一个ssh隧道。
ssh -N -L 8887:localhost:9000 eric@10.0.0.123
需要注意:
- 本机的端口避免使用jupyter notebook默认端口。
- ssh有个参数 -f 可以让ssh在后台运行。但这样,完成任务后,想关闭隧道就需要杀死进程
ps -C ssh
kill XXXX
- 在本机上使用
在浏览器中输入本机地址和端口就可以使用服务器上的notebook。
http://localhost:8887
参考:
https://www.blopig.com/blog/2018/03/running-jupyter-notebook-on-a-remote-server-via-ssh/