VSCode使用Remote SSH远程连接Windows 7

结论

VSCode Server不能启动,无法建立连接。

原因

.vscode-server 目录中的 node.exe 无法运行。


原因是Node.js仅在Windows 8.1、Windows Server 2012 R2或更高版本上受支持。

由于vscode基于node.js v14,不支持Windows 7操作系统。

另:Electron计划支持Windows 7到chrome将其标记为EOL(定于2022年1月)。

来源:https://github.com/microsoft/vscode-remote-release/issues/5306

尝试过程

Windows 7安装SSH服务端并开启sshd服务

Windows 7安装SSH服务端

下载Win32 port of OpenSSH项目(https://github.com/PowerShell/Win32-OpenSSH)中的 OpenSSH-Win64.zip 压缩包。

由于SSH服务端的操作系统是Windows 7,不支持如v9.5.0.0p1-Beta、v9.4.0.0p1-Beta等较新版本,所以索性选择如v8.0.0.0p1-Beta这样的旧版本安装。

OpenSSH-Win64.zip 是离线安装包,解压就好。将 OpenSSH-Win64.zip 解压到 C:\Program Files\ 目录。右键单击计算机,属性------>高级系统设置------>环境变量,在系统变量框里面找到 Path,编辑,由于Windows 7是以文本形式编辑的,所以就需要在最后先添加 ;,再把你安装路径 C:\Program Files\OpenSSH-Win64 粘贴进去,保存。

使用cmd或者PowerShell输入ssh,如果得到命令菜单则SSH客户端安装成功。


使用cmd或者PowerShell:

  1. 安装sshd服务:

    powershell.exe -ExecutionPolicy Bypass -File install-sshd.ps1

  2. 配置windows防火墙入站规则sshd,开放XX端口(XX端口可自定义):

    netsh advfirewall firewall add rule name=sshd dir=in action=allow protocol=TCP localport=XX

  3. 配置sshd服务开机自启动:

    sc config sshd start= auto

sshd服务常用命令

  1. 开启sshd服务:

    net start sshd

  2. 关闭sshd服务:

    net stop sshd

  3. 验证服务是否开启:
    查看本机的XX端口是否是监听状态。

    netstat -an

配置sshd服务

首次启动sshd后会生成 C:\ProgramData\ssh\ 目录,打开 C:\ProgramData\ssh\ 目录下的 sshd_config 文件,将一些常用项的注释去掉并按需要修改:

复制代码
Port XX

这是sshd服务的端口,这里的 XX 就是之前开放的XX端口。

以下这两条是口令验证相关配置项:

复制代码
PasswordAuthentication yes

密码认证,默认为 yes,即允许使用口令登录。如果修改为 no 则只允许使用秘钥登录,不能使用口令登录。

复制代码
PermitEmptyPasswords no

无密码登录。这个选项默认是注释掉的,并且是默认关闭的(不允许空密码登录)。

以下这两条是密钥验证相关配置项:

复制代码
PubkeyAuthentication yes

用来设置是否开启公钥验证。这个选项默认是注释掉的,并且是默认开启的(允许密钥认证)。

并不需要专门写一行 RSAAuthentication yes,RSAAuthentication(rsa认证)这个配置项被废除了。

复制代码
AuthorizedKeysFile	.ssh/authorized_keys

设置公钥验证文件的路径,.ssh/authorized_keys 是默认公钥存放的位置,一般不用修改。

以下这两条需要注释掉:

复制代码
#Match Group administrators
#       AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys

修改完后需要重启sshd服务。

测试ssh连接

复制代码
ssh 要登录的用户名@服务端IP -p sshd服务端口

在第一次建立ssh连接的时候,系统会有提示,大概意思是无法确认主机XXXXXXXXX的真实性,知道公钥指纹,是否继续连接?

输入 yes 之后,提示该host已经被确认,该host key会写入到客户端 C:\Users\你的用户名\.ssh 目录下的 known_hosts 文件中。

之后输入完密码就能建立ssh连接。

配置免密登录(密钥验证)

在客户端生成密钥对,把密钥对中的公钥上传至服务端

在客户端上生成秘钥对文件

复制代码
ssh-keygen -t rsa -d 4096

-t:可选参数,指定加密算法,密钥的文件名称的格式必须为 id_xxx,其中 xxx 就是指定的密钥类型,如 id_rsa
-d:可选参数,设置加密位数,指定生成的密钥长度

执行上面的命令后会提示让输入一个文件名,也就是密钥文件名称格式 id_xxx 中的 id,用于保存刚才生成的SSH key,如果是第一次生成密钥文件,直接点回车使用默认文件名就行,会生成 id_rsaid_rsa.pub 秘钥对文件。

接着又会提示输入两次密码,用于密钥验证登录时进行二次验证,如果不想进行二次验证就直接点回车。

之后就会在 C:\Users\你的用户名\.ssh 目录下生成公钥文件 id_rsa.pub 和私钥文件 id_rsa。(后缀是.pub的为公钥)

在服务端配置免密登录

将客户端生成的公钥文件内容复制到服务端 C:\Users\你的用户名\.ssh 目录下的 authorized_keys文件中,如果没有 authorized_keys文件就新建一个。

配置服务端 C:\ProgramData\ssh\ 目录下的 sshd_config 文件:

复制代码
PasswordAuthentication no

即只允许使用秘钥登录,不能使用口令登录。

在客户端配置免密登录

C:\Users\你的用户名\.ssh 目录下的 config 文件中配置:

复制代码
Host SSH连接的名称,一般写IP、域名或者主机名
  HostName IP或者域名
  User 要登录的用户名
  Port sshd服务的端口
  IdentityFile "C:\Users\你的用户名\.ssh\id_rsa"		# 私钥文件的路径

IdentityFile路径上一定不能有中文,如果你的用户名是中文,那么就要将秘钥放置到别的文件路径中。

配置完成后就可以用ssh登录服务端了。

使用VSCode进行远程开发

安装 Remote Development 插件

这里需要用到的是 Remote Development 的一个扩展包:Remote - SSH 插件。

操作比较简单,这里就不赘述了。

更新windows 7系统的PowerShell

由于Windows7 sp1系统内置的PowerShell的版本是v2.0,其较低的版本会导致在使用VSCode进行ssh连接时无法安装VSCode Server,所以需要更新PowerShell版本。

Windows7系统大概只能更新到PowerShell Core 6.0,PowerShell 7已经不支持了。

来源:https://learn.microsoft.com/zh-cn/powershell/scripting/whats-new/migrating-from-windows-powershell-51-to-powershell-7?view=powershell-7.4

Powershell项目:https://github.com/PowerShell/Powershell

不过这里安装的是PowerShell 5.1,减少不必要的麻烦。

来源:https://learn.microsoft.com/zh-cn/previous-versions/powershell/scripting/windows-powershell/install/installing-windows-powershell?view=powershell-7.1

查看PowerShell版本:

复制代码
$PSVersionTable

安装Microsoft .NET Framework 4.61:https://www.microsoft.com/zh-cn/download/details.aspx?id=49982

下载安装即可。

安装Windows Management Framework 5.1:https://www.microsoft.com/en-us/download/details.aspx?id=54616

下载这个:

解压 Win7AndW2K8R2-KB3191566-x64.zip,执行 Install-WMF5.1.ps1 脚本。

由于Windows 7默认的PowerShell 2.0不允许运行脚本,所以先改配置:

  1. 查看当前执行策略:

    Get-ExecutionPolicy

Restricted:默认的设置, 不允许任何脚本运行
AllSigned:只能运行经过数字证书签名的脚本
RemoteSigned:运行本地的脚本不需要数字签名,但是运行从网络上下载的脚本就必须要有数字签名
Unrestricted:允许所有的脚本运行

  1. 将执行策略修改为 RemoteSigned

    Set-ExecutionPolicy RemoteSigned -Force

或者

复制代码
set-ExecutionPolicy RemoteSigned

然后选 y,更改执行策略。

执行 Install-WMF5.1.ps1 脚本:

复制代码
.\Install-WMF5.1.ps1

安装完成后,重启PowerShell,就是5.1版本了。

好了,现在可以用VSCode进行ssh连接来在服务端上安装VSCode Server了。

相关推荐
*Lisen1 小时前
重新安装解决mac vscode点击不能跳转问题
ide·vscode·macos
小男孩tom2 小时前
vscode
ide·vscode·编辑器
我命由我1234517 小时前
VSCode - VSCode 放大与缩小代码
前端·ide·windows·vscode·前端框架·编辑器·软件工具
MrWang.17 小时前
Ubuntu中SSH服务器安装使用
服务器·ubuntu·ssh
old_power19 小时前
VSCode 工作区配置文件通用模板创建脚本
ide·vscode·编辑器
Lw老王要学习19 小时前
VScode 使用 git 提交数据到指定库的完整指南
windows·git·vscode
vortex521 小时前
在 Kali 上打造渗透测试专用的 VSCode 环境
ide·vscode·编辑器
家庭云计算专家1 天前
飞牛云一键设置动态域名+ipv6内网直通访问内网的ssh服务-家庭云计算专家
运维·云计算·ssh·nextcloud·ddns·动态域名解析
科文小白狼1 天前
Linux下VSCode开发环境配置(LSP)
linux·vscode·里氏替换原则·lsp
鱼馅饼1 天前
vscode使用系列之快速生成html模板
ide·vscode·html