利用 SSH 端口转发访问 Jupyter Lab

通过跳板机 SSH 端口转发,访问目标服务器的 Jupyter Lab。

网络结构拓扑图

现有一台 GPU 服务器(node),与另一服务器(master)即跳板机相连。GPU 服务器未接入网络,但 master 接入网络,此时可以采用两次 SSH 端口转发访问 node 上运行的 Jupyter Lab。 网络结构拓扑图

连接步骤

1 登录 masternode 服务器

从本地登录 master 节点

1
ssh username@master_ip
master 登录 node 节点
1
2
3
ssh username@node
or
ssh node
node 登录 master
1
2
3
ssh username@master
or
ssh master
退回上一级
1
exit

2 在 node 上运行 Jupyter Lab

设置 Jupyter 密码

1
jupyter notebook password

运行 Jupyter Lab

1
jupyter lab --no-browser --ip="0.0.0.0" --port=10886
若要运行 Jupyter Lab 时不显示输出,将输出写入nohup.out文件
1
nohup jupyter lab --no-browser --ip="0.0.0.0" --port=10886 &

3 端口转发

master 上的端口转发:master 也是无界面的 commandline 模式,因此需要转发 node10886 端口。在 master 中运行以下命令,其中 xx.xx.xx.xx 是 master 的 ip(ip地址也可用localhost代替),10110master 的端口,10886node 的端口。

1
ssh -N -f -L 10110:xx.xx.xx.xx:10886 user@node
此时 node 的 Jupyter Lab 可以在 master 上通过 localhost:10110 或在本地通过 xx.xx.xx.xx:10110 进行访问。出于某些原因,有时可能需要将 master 的端口再转发至本地,即 localhost
1
ssh -N -f -L 8888:localhost:10110 user@xx.xx.xx.xx

其他Linux命令

1 停止进程

若要停止 Linux 上的 SSH 端口转发或 Jupyter Lab,可以通过 ps aux | grep (filter_name) 来查找进程,并 kill 进程。

2 SSH 连接参数

1
2
3
4
5
-C 压缩传输  
-f 将 SSH 传输转入后台执行
-N 建立静默连接
-g 允许远程主机连接本地用于转发的端口
-L 本地端口转发

参考资料

  1. https://notes.hxhc.xyz/