如何配置使用 VSCode Remote SSH
本文将展示如何配置扩展和 Windows 远程主机,以使用 VSCode Remote SSH 功能。
本文环境:
- 远程主机系统 Windows Server 2022 Datacenter 21H2
- Visual Studio Code 1.86.1
配置远程主机
配置 OpenSSH Server、远程用户及其权限。
在远程主机配置远程用户
为了使系统更加安全,通常不使用管理员用户远程登陆系统,所以这里需要新建一个用户和 SSH 用户组,并为其配置权限。
在任务栏 Win 标志上右键,点击打开“计算机管理”。
配置用户组
为了统一管理 SSH 远程连接权限,配置“SSHUsers”用户组为允许 SSH 连接的组。目前 Visual Studio Code Server 不支持非管理员用户远程连接,因此还需要新建一个“EnabledRemoteWMI”用户组,为远程使用 VSCode 的非管理员用户配置 WMI 权限。
在打开的“计算机管理”窗口中点击左侧树形列表中的“计算机管理(本地)”-“系统工具”-“本地用户和组”-“组”,点击右侧的“操作”-“组”-“更多操作”,选择“新建组…”。在打开的对话框中填写组名“SSHUsers”并添加可选描述,然后点击创建按钮完成新建组。
相同的操作,再次创建用户组“EnabledRemoteWMI”用户组。
在打开的“计算机管理”窗口中点击左侧树形列表中的“计算机管理(本地)”-“服务和应用程序”-“WMI 控件”,点击右侧的“操作”-“WMI 控件”-“更多操作”,选择“属性”。
- 在打开的“WMI 控件 属性”对话框选择“安全”标签页,在树形列表中展开并选择“Root”-“CIMV2”,点击“安全设置”按钮;
- 在打开的“安全设置 ROOT\CIMV2”对话框中点击“高级”按钮;
- 在打开的“CIMV2的高级安全设置”对话框的“权限”标签页下点击添加按钮;
- 在打开的“CIMV2 的权限项目”对话框点击“选择主体”连接;
- 在打开的“选择用户或组”对话框输入上文用户组“EnabledRemoteWMI”,点击检查名称按钮,然后点击确定按钮关闭对话框;
- 回到“CIMV2 的权限项目”对话框,在权限列表多选框仅勾选“远程启用”选项,然后点击确定按钮关闭对话框;
- 点击确定按钮关闭对话框;
- 点击确定按钮关闭对话框;
- 点击确定按钮关闭对话框。
新建用户
在打开的“计算机管理”窗口中点击左侧树形列表中的“计算机管理(本地)”-“系统工具”-“本地用户和组”-“用户”,点击右侧的“操作”-“组”-“更多操作”,选择“新用户…”。在打开的对话框中填写用户名“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)”。创建新规则,点击“操作”-“入站规则”-“新建规则…”,在弹出的“新建入站规则导航”对话框中依次操作:
- 在“规则类型”步骤中选择“自定义”,点击下一步;
- 在“程序”步骤中的“此程序路径”填写 OpenSSH Server 路径“%SystemRoot%\system32\OpenSSH\sshd.exe”,点击下一步;
- 在“协议和端口”步骤中选择“协议类型”为“TCP”,本地端口为“特定端口”,并填写上文中指定的端口 8022,点击下一步;
- 在“作用域”步骤中配置需要的规则,默认无需配置,点击下一步;
- 在“操作”步骤中选择“允许连接”,点击下一步;
- 在“配置文件”步骤中勾选需要的域,默认全选即可,点击下一步;
- 在“名称”步骤中为规则命名和添加描述,如“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 用户配置密钥登陆。