1 为什么要用跳板机?跳板机 -> 目标服务器的问题
- 有的服务器部署在实验室内网环境,我们无法直接用个人笔记本进行连接。所以,一般通过ssh先连接跳板机(能被外部网络环境访问到),再通过ssh跳转到目标服务器(内网环境)。
- 但是问题来了!编程仅能通过vim等文本编辑工具进行,训练时使用命令行操作,造成了一定程度的不方便。
- 之前我总结了vscode远程连接服务器及如何免密登陆(【完整过程】vscode连接远程Linux服务器及免密登陆),这个明显属于一次连接,如果“跳板机 -> 目标服务器”也同样可以配置vscode远程连接,那会给我们的coding带来很大的便利。所以能否实现呢?答案是肯定的!
- 说明:因为绝大多数的操作和直接实现vscode连接远程操作是一致的,所以具体操作请看上面给出的链接即可,所以这里只介绍跳板机到内网目标服务器的关键操作。
2 配置config文件
我们已经在之前配置好了ssh到跳板机的config,所以现在只需要配置从跳板机ssh到内网目标服务器的config:
下面给出一个示例config:
Host JumperSever
HostName 1.1.1.1
User student1
Port 1001
Host TargetSever
HostName 2.2.2.2
User student2
ProxyCommand C:\Windows\System32\OpenSSH\ssh.exe -W %h:%p JumperSever
3 注意一下
- config中本来是应该有Password的,但是这里我提前找管理员配置好了免密连接,所以不需要在config中写Password了。免密连接的配置这里分两步:① 把你本机(笔记本)的
public key
写入跳板机的authorized_keys
文件中;② 把你跳板机上的public key
写入目标服务器的authorized_keys
文件中。
两步操作几乎一致,keygen生成公钥(client端本机操作)和写入authorized_keys(admin在server端操作)两步,仍然可以参考这篇:【完整过程】vscode连接远程Linux服务器及免密登陆 - 这个跨服务器的配置的关键点在于:
ProxyCommand ssh -W %h:%p JumpSever
这一行!通过ProxyCommand ssh
将跳板机指向目标服务器。注意,这里的ssh需要换成你本机ssh.exe
的路径。
4 远程连接,开始实验
在vscode左侧直接找到目标服务器的选项,进行远程连接:
然后选择你要进入的文件夹下,开始实验。之后的操作就和直接用ssh进行远程连接一模一样了:
可以看到,我已经通过vscode远程连接到了内网目标服务器上(通过跳板机再ssh了一次),bingo!!!⭐