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了。

相关推荐
那个指针是空的?1 小时前
配置使用SSH与VScode进行连接
vscode·编辑器
冰橙子id4 小时前
linux-远程访问管理(sshd,scp,sftp)
linux·网络·ssh
渊兮旷兮18 小时前
vscode 安装 esp ide环境
ide·vscode·编辑器
西瓜有点饿1 天前
解决问题:在cmd中能查看到pnpm版本,在vscode终端中却报错
vscode·编辑器
迷路爸爸1801 天前
让 VSCode 调试器像 PyCharm 一样显示 Tensor Shape、变量形状、变量长度、维度信息
ide·vscode·python·pycharm·debug·调试
电子小子洋酱2 天前
VScode SSH远程连接Ubuntu(通过SSH密钥对的方式)
vscode·物联网·ubuntu·ssh
DogDaoDao2 天前
Windows下VScode配置FFmpeg开发环境保姆级教程
windows·vscode·ffmpeg·音视频·gcc
TeleostNaCl2 天前
一次因 luci 无法登录而通过 SSH 升级 OpenWrt 固件的经验总结
运维·网络·经验分享·ssh·智能路由器
aningxiaoxixi2 天前
vscode 中的 mermaid
网络·ide·vscode
強云2 天前
使用 SSH 连接 GitHub
ssh·github