做科研经常有这样的需求:即需要借助服务器的计算资源,本地编辑的工程文件需要每次都传到服务器才能运行。jupyter是较好的交互式编辑工具,有没有一种方式可以在jupyter上编辑属于服务器的文件呢?这就引出了我们的端口映射工具。
我的测试代码在ubuntu系统测试是通过。
所需工具:服务器(安装好SSH、Jupyter Notebook),本机(Ubuntu系统)
- 首先使用ssh连接本机与服务器,使用端口映射
ssh -L 18192:127.0.0.1:8192 server_name@server_ip_address
服务器端口指定为8192(或者其他),表示在服务器端终端输入jupyter notebook启动jupyter时端口为8192。本机端口设置为18192,即可在本机的浏览器中按照地址加端口18192打开jupyter。
2. 启动jupyter
启动jupyter需要注意两点,
- 默认是打开浏览器,而我们不能在服务器端自动打开浏览器
- 需要指定端口为端口B,如8192
jupyter notebook --no-browser --port=8192 --allow-root
输入时候终端会打印如下信息:
jupyter notebook --no-browser --port=8192 --allow-root
[I 19:52:24.274 NotebookApp] Serving notebooks from local directory: /home/medialab
[I 19:52:24.274 NotebookApp] The Jupyter Notebook is running at:
[I 19:52:24.274 NotebookApp] http://localhost:8192/?token=5ec2a496d6ad157c729f7c0a4df05e68af844bdb628d7768
[I 19:52:24.274 NotebookApp] or http://127.0.0.1:8192/?token=5ec2a496d6ad157c729f7c0a4df05e68af844bdb628d7768
[I 19:52:24.274 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
[C 19:52:24.277 NotebookApp]
To access the notebook, open this file in a browser:
file:///home/user/.local/share/jupyter/runtime/nbserver-4222-open.html
Or copy and paste one of these URLs:
http://localhost:8192/?token=5ec2a496d6ad157c729f7c0a4df05e68af844bdb628d7768
or http://127.0.0.1:8192/?token=5ec2a496d6ad157c729f7c0a4df05e68af844bdb628d7768
这时候,你有两种方式在本地浏览器打开jupyter,注意端口需要指定为本地端口A
方式一:
http://localhost:18192
方式二:
http://127.0.0.1:18192
复制token输入就可以愉快的使用jupyter啦!
举一反三,端口映射还可以用在训练模型进度查看神器tensorboard上面。