运维人员支持使用 VSCode 远程连接云堡垒机中的 Linux 主机,安全地访问远程服务器上的资源。本文为您介绍如何配置 VSCode 并使用 SSH 隧道连接云堡垒机中的主机。
背景信息
Visual Studio Code (VSCode) 是一款轻量级源代码编辑器,开发人员通常使用 VSCode 在本地进行代码编写。出于数据和人员的安全性保证,公司会将用于开发和调试的开发机迁移到云上,并通过云堡垒机进行管理。
此时,可以使用 VSCode 的 Remote - SSH
扩展,远程连接云堡垒机中的 Linux 主机,对主机进行各种运维操作。例如:远程编写代码、远程运行开发环境等。
前提条件
通过 VSCode 远程连接云堡垒机中的主机,管理员需完成以下准备工作:
- 已经准备 Linux 主机,并成功创建主机账号。
- 前往 访问控制 新建关联云堡垒机运维权限的用户或为已有用户关联云堡垒机运维人员权限,要求关联 VBHOperateOnlyAccess 策略。
- 根据 管理员使用指引 完成云堡垒机配置。至少完成以下步骤:添加 Linux 主机、新建主机账号、验证主机账号、导入用户、授权主机、授权主机账号。
- 已经在访问控制开放 SFTP 权限,或确保主机可以访问公网,方便远程传输文件。访问控制相关详细介绍参见:创建访问控制策略。
通过 VSCode 远程连接云堡垒机中的主机,运维人员需完成以下准备工作:
- 已安装 VSCode 客户端。
- 已经获取登录云堡垒机的 IP 地址、主机 ID 和运维人员的用户名、密码/密钥,获取方式参见:登录资产需要提前获取哪些信息?。
使用限制
- 开启 VSCode 连接后,通过 VSCode 连接发起的命令无法审计、命令策略无法生效。如有强安全管控诉求,不推荐使用此场景。
- 仅支持远程连接 Linux 主机。
操作步骤
管理人员开启 VSCode 连接功能后,运维人员在本地 VSCode 客户端配置 SSH 连接,通过 SSH 隧道连接到目标主机。推荐操作步骤如下:
步骤一:开启 VSCode 连接
- 管理人员登录 云堡垒机控制台。
- 在左侧导航栏,选择 云堡垒机。
- 单击目标云堡垒机名称,进入云堡垒机管理页面,在左侧导航栏,选择 系统配置。
- 在 安全设置 页签,开启 VSCode 连接,完成后单击 保存。
注意
开启 VSCode 连接后,通过 VSCode 连接发起的命令无法审计、命令策略无法生效。如有强安全管控诉求,请勿开启。
步骤二:安装 Remote - SSH 扩展
- 运维人员打开本地 VSCode 客户端,单击左侧扩展图标(快捷键:Ctrl+Shift+X)。
- 搜索
Remote - SSH
扩展工具,单击 安装。
步骤三:配置 SSH 信息
- 在 VSCode 顶部搜索框,选择 显示并运行命令,打开命令面板(快捷键:Ctrl+Shift+P)。
- 输入
Remote-SSH: Connect to Host...
,单击 Enter 确认。 - 选择 添加新的 SSH 主机,输入主机的 SSH 连接命令,完成后单击 Enter 确认。
配置项 | 说明 |
---|
主机 SSH 连接命令 | 由云堡垒机用户名、目标主机 ID、主机账号和云堡垒机 IP 地址组合而成,格式为ssh <云堡垒机用户名>/<目标主机 ID>/<主机账号>@<云堡垒机 IP 地址> -p 2002 ,例如:ssh vbh/3kdy4s49-2d45-4ooo-9jn2-16876dj6q4e3/root@192.168.90.50 -p 2002 。 说明 若云堡垒机 IP 地址使用私网 IP,请确保本地客户端与云堡垒机的网络连通性。 |
- 选择或创建一个 SSH 配置文件,用于存储 SSH 连接信息。
说明
SSH 配置文件通常为 ~/.ssh/config
,可执行 cat .ssh/config
命令,查看配置文件中的信息。
- 单击 继续 确定连接动作,并根据引导提示依次输入云堡垒机用户的登录密码,直至首次连接成功。
步骤四:使用 SSH 隧道连接主机
首次配置 SSH 信息并连接主机成功后,相关信息将会保存,后续可以使用已经配置的信息快速连接主机。
- 在 VSCode 顶部搜索框,选择 显示并运行命令,打开命令面板(快捷键:Ctrl+Shift+P)。
- 输入
Remote-SSH: Connect to Host...
,单击 Enter 确认。 - 选择已经配置的主机,根据提示输入云堡垒机用户的登录密码,单击 Enter 确认,即可成功连接主机。
结果验证
使用 VSCode 成功连接云堡垒机中的 Linux 主机后,即可对主机进行各种运维操作。例如:前往资源管理器(快捷键:Ctrl+Shift+E),打开文件夹或文件,远程编辑主机中的文件;远程运行开发环境等。