老吴的研发日志

如何配置使用 VSCode Remote SSH

本文将展示如何配置扩展和 Windows 远程主机,以使用 VSCode Remote SSH 功能。

本文环境:

配置远程主机

配置 OpenSSH Server、远程用户及其权限。

在远程主机配置远程用户

为了使系统更加安全,通常不使用管理员用户远程登陆系统,所以这里需要新建一个用户和 SSH 用户组,并为其配置权限。

在任务栏 Win 标志上右键,点击打开“计算机管理”。

配置用户组

为了统一管理 SSH 远程连接权限,配置“SSHUsers”用户组为允许 SSH 连接的组。目前 Visual Studio Code Server 不支持非管理员用户远程连接,因此还需要新建一个“EnabledRemoteWMI”用户组,为远程使用 VSCode 的非管理员用户配置 WMI 权限。

在打开的“计算机管理”窗口中点击左侧树形列表中的“计算机管理(本地)”-“系统工具”-“本地用户和组”-“组”,点击右侧的“操作”-“组”-“更多操作”,选择“新建组…”。在打开的对话框中填写组名“SSHUsers”并添加可选描述,然后点击创建按钮完成新建组。

相同的操作,再次创建用户组“EnabledRemoteWMI”用户组。

在打开的“计算机管理”窗口中点击左侧树形列表中的“计算机管理(本地)”-“服务和应用程序”-“WMI 控件”,点击右侧的“操作”-“WMI 控件”-“更多操作”,选择“属性”。

  1. 在打开的“WMI 控件 属性”对话框选择“安全”标签页,在树形列表中展开并选择“Root”-“CIMV2”,点击“安全设置”按钮;
  2. 在打开的“安全设置 ROOT\CIMV2”对话框中点击“高级”按钮;
  3. 在打开的“CIMV2的高级安全设置”对话框的“权限”标签页下点击添加按钮;
  4. 在打开的“CIMV2 的权限项目”对话框点击“选择主体”连接;
  5. 在打开的“选择用户或组”对话框输入上文用户组“EnabledRemoteWMI”,点击检查名称按钮,然后点击确定按钮关闭对话框;
  6. 回到“CIMV2 的权限项目”对话框,在权限列表多选框仅勾选“远程启用”选项,然后点击确定按钮关闭对话框;
  7. 点击确定按钮关闭对话框;
  8. 点击确定按钮关闭对话框;
  9. 点击确定按钮关闭对话框。

新建用户

在打开的“计算机管理”窗口中点击左侧树形列表中的“计算机管理(本地)”-“系统工具”-“本地用户和组”-“用户”,点击右侧的“操作”-“组”-“更多操作”,选择“新用户…”。在打开的对话框中填写用户名“ssh”并添加可选全名、描述,然后设置密码,取消勾选“用户下次登录时须更改密码”,点击创建按钮。

双击列表中的“ssh”用户,打开“ssh 属性”对话框。点击切换到“隶属于”标签页,点击添加按钮打开“选择组”对话框,然后输入“SSHUsers”,点击检查名称按钮,点击确定按钮关闭对话框。然后相同的操作添加“EnabledRemoteWMI”用户组。

配置 OpenSSH Server

启动 Powershell,查看 OpenSSH Server 是否已经安装。

PS> Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*'

Name  : OpenSSH.Client~~~~0.0.1.0
State : Installed

Name  : OpenSSH.Server~~~~0.0.1.0
State : NotPresent

如果没有安装,使用如下命令安装 OpenSSH Server。

PS> Add-WindowsCapability -Online -Name OpenSSH.Server

Path          :
Online        : True
RestartNeeded : False

首次安装需要启动一次 sshd 服务以创建默认配置文件。

PS> net start sshd
PS> net stop sshd

编辑 OpenSSH Server 配置文件“C:\ProgramData\ssh\sshd_config”,修改默认端口(本文修改为8022),取消管理员秘钥登录设置,添加允许连接的用户组 SSHUsers。

# 修改默认端口以防止扫描
#Port 22
Port 8022

# 为配置文件管理员秘钥设置添加注释
#Match Group administrators
#       AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys

# 添加上文 SSH 用户组权限
AllowGroups SSHUsers

若修改了端口,需要更改防火墙配置。打开“高级安全 Windows Defender 防火墙”,选择“本计算机上的高级安全 Windows Defender 防火墙”-“入站规则”,停用现有的规则“OpenSSH SSH Server (sshd)”。创建新规则,点击“操作”-“入站规则”-“新建规则…”,在弹出的“新建入站规则导航”对话框中依次操作:

  1. 在“规则类型”步骤中选择“自定义”,点击下一步;
  2. 在“程序”步骤中的“此程序路径”填写 OpenSSH Server 路径“%SystemRoot%\system32\OpenSSH\sshd.exe”,点击下一步;
  3. 在“协议和端口”步骤中选择“协议类型”为“TCP”,本地端口为“特定端口”,并填写上文中指定的端口 8022,点击下一步;
  4. 在“作用域”步骤中配置需要的规则,默认无需配置,点击下一步;
  5. 在“操作”步骤中选择“允许连接”,点击下一步;
  6. 在“配置文件”步骤中勾选需要的域,默认全选即可,点击下一步;
  7. 在“名称”步骤中为规则命名和添加描述,如“OpenSSH Server (8022)”,点击完成。

最后启动 OpenSSH Server,并设置自动启动。

PS> sc.exe config ssh-agent start= auto

PS> sc.exe config sshd start= auto

PS> net start ssh-agent

PS> net start sshd

配置 Visual Studio Code

安装并打开 Visual Studio Code。在左侧边栏点击 Extensions 图标,搜索“Remote - SSH”并安装扩展。

安装完成后,点击左侧边栏 Remote Explorer 图标,在左侧展开的 REMOTE EXPLORER 视图顶部下拉框选择“Remotes (Tunnels/SSH)”,然后其下方的 SSH 行后的设置图标“Open SSH Config File”,在弹出的下拉列表中选择 VSCode SSH 存取配置文件的位置,默认可选择第一项,即当前用户目录下的“.ssh\config”文件。

编辑打开的配置文件并保存。

Host YourHostAlias
    HostName YourHostIpOrDomain
    Port 8022
    User ssh

保存后即可点击 VSCode 窗口左下角的“><”图标,选择“Connect to host…”,然后选择“YourHostAlias”连接远程“Windows”主机了。首次连接需要确认主机指纹,确认后选择“Continue”即可,VSCode 会自动在远程主机安装 VSCode Server,之后就可以正常使用了。

如果不想在每次连接远程主机时输入密码,可以为 SSH 用户配置密钥登陆。

参考