情况介绍
实验室的 GPU 服务器是仅校园网内网访问的,不在校内就无法连接。
然后师兄给了我一台工位上的电脑,Linux 系统,使用向日葵远程桌面进行连接。但是网络太差了,使用起来一卡一卡的,根本干不了活,而且工位电脑开着显示器没什么隐私。
而且,我们实验室管理条例是禁止在 GPU 服务器上安装任何内网穿透服务的。所以,如果你们实验室没有该条例可以直接从GPU服务器反向ssh到公网VPS,只需要一层跳板即可。
解决方法
设置好ssh免密登陆:本地到VPS,工位到VPS,本地到GPU服务器
思路是有一台公网的VPS,然后从工位电脑反向ssh到公网服务器:
1 | ssh -N -R 2222:localhost:22 <vps_user>@<vps_ip> |
上面代码的作用是:将工位电脑的22端口(即ssh端口)映射到公网VPS的2222端口,相当于在 工位电脑-公网VPS 之间构建了一条双向通信的隧道,公网VPS的2222就是工位电脑的22端口。
- 在本地的笔记本上,ssh连接到公网VPS地址的2222端口,看看是否能直接连接工位电脑。可以的话,直接再增加一层跳板,从工位电脑跳到实验室的GPU服务器。
现在的路径为:本地笔记本 -> 公网 VPS -> 工位电脑 -> GPU 服务器
设置本地笔记本的 ~/.ssh/config
设置:
1 | Host vps |
最后直接 ssh labserver
即可。
- 最后可以在工位电脑上讲反向ssh的服务持久化,设置一个 systemd service
1 | sudo nano /etc/systemd/system/reverse-ssh-tunnel.service |
1 | [Unit] |
替换占位信息后保存.
保存之后运行:
1 | sudo systemctl daemon-reload |
查看运行状态:
1 | sudo systemctl status reverse-ssh-tunnel.service |