tabby和vscode配置跳板机登录
如题。
这个问题源于实际需求:如下图,实验室的网络环境造成了内网和公网的隔离,其中计算任务都需要在内网主机1上运行。然而内网主机1不具有公网IP,一旦离开实验室的内网环境(例如断开WIFI回到宿舍),那么就无法访问主机1了。好在内网环境下有跳板机(或称之为gate节点),其拥有公网IP,意味着在实验室外也可以访问。因此,公网环境的PC若想访问内网环境下的主机1,需要以内网主机2为跳板机,先登录内网主机2,再从内网主机2登录主机1。
然而,每次登录实验室服务器(内网主机1)都需要从内网主机2做跳转,这个过程要登录两次,实在太麻烦。有没有一种工具可以简化这个登陆的过程,实现自动化的跳转登录呢?
经过一些资料收集和与同学的交流,大致了解到两种方法可以实现这一需求:①使用Tabby这款命令行工具进行登录,其内置了对跳板机登录的支持;②使用vscode的远程登陆功能,只不过需要进行一些额外的配置。下面我们将依次介绍这两种方法。
基于Tabby的跳板机登录方法
Tabby是一款开源的命令行工具(Github链接: https://github.com/Eugeny/tabby ),其使用electron技术开发,因此颜值非常高(缺点是略微有点消耗性能,算是高颜值的代价)。在GitHub仓库的release页面 上提供了下载链接,可以选择适合自己系统版本的安装包进行下载和安装,安装之后的界面如下。
配置跳板机登录
下面我们来创建连接。创建新连接配置的方法如下图所示,在设置页面的“Profiles&connections”里面点击“+New”即可进入配置界面。
在Tabby里面,创建需要经过跳板机登陆的远程连接,需要两步。假设我们的跳板机域名是gate.example.com
,内网主机的IP地址为 192.168.10.10
,下面我们首先进行跳板机的连接。
如下图,在选择profile template这里,选择SSH connection。
这里设置一个连接名称,简单易记即可。后面要用到。
这个界面继续往下滚动,可以看到更多的设置。在这里配置好跳板机的主机名,设置登陆密码,之后点击保存,即完成了跳板机的设置。可以在连接窗口中连接一下跳板机,测试是否配置成功。
配置内网主机登录
之后,再创建登录内网服务器的连接。
我们依然在设置页面的“Profiles&connections”里面点击“+New”,选择SSH连接为模板,进入配置界面。这里我们把新的连接命名为 server host 1
,以便与之前的连接做区分。
下面,我们配置内网服务器的IP等信息。如下图,首先在Connection方式里选择“Jump host”(跳板主机),并在Jump host栏里选择刚刚创建的gate主机。之后,按实际情况配置Host、Port、Username等信息,并设置登陆密码,如此我们就完成了配置。
实际使用
在“Profiles&connections”列表里面选择刚刚配置的连接,点击三角符号即可启动连接。
连接过程如下。首先,tabby会自动登录到跳板机,屏幕上输出下面这些信息:
随后,tabby会自动的完成从跳板机到内网主机的登录,屏幕输出如下所示:
tabby还支持通过Jump Host的SFTP传文件,如下图所示。这一功能非常方便,免去了ssh登录的两次scp拷贝文件的麻烦。
基于vscode的跳板机配置
vscode自身并不支持远程连接,但是vscode插件市场提供了远程登陆的插件,可以帮助我们连接远程服务器(参考博客的往期文章 《VS Code配置远程服务器插件》)。
相比于tabby,vscode虽然也支持跳板机登录,但支持的并不是很直白。我们需要手动修改一些配置文件,才能实现跳板机登录。如下图,首先我们打开vscode远程登陆的配置文件。
打开以后,我们在文件里添加下面这些内容:
1 | Host JumpMachine |
保存以后,点刷新,左侧远程连接的列表里面就会显示出JumpMachine、TargetMachine的信息。要连接时,点击TargetMachine即可实现跳板机连接内网主机。
以上。