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:
- 安装sshd服务:
powershell.exe -ExecutionPolicy Bypass -File install-sshd.ps1
- 配置windows防火墙入站规则sshd,开放XX端口(XX端口可自定义):
netsh advfirewall firewall add rule name=sshd dir=in action=allow protocol=TCP localport=XX
- 配置sshd服务开机自启动:
sc config sshd start= auto
sshd服务常用命令
- 开启sshd服务:
net start sshd
- 关闭sshd服务:
net stop sshd
- 验证服务是否开启:
查看本机的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_rsa 和 id_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不允许运行脚本,所以先改配置:
- 查看当前执行策略:
Get-ExecutionPolicy
Restricted:默认的设置, 不允许任何脚本运行
AllSigned:只能运行经过数字证书签名的脚本
RemoteSigned:运行本地的脚本不需要数字签名,但是运行从网络上下载的脚本就必须要有数字签名
Unrestricted:允许所有的脚本运行
- 将执行策略修改为
RemoteSigned:
Set-ExecutionPolicy RemoteSigned -Force
或者
set-ExecutionPolicy RemoteSigned
然后选 y,更改执行策略。
执行 Install-WMF5.1.ps1 脚本:
.\Install-WMF5.1.ps1
安装完成后,重启PowerShell,就是5.1版本了。

好了,现在可以用VSCode进行ssh连接来在服务端上安装VSCode Server了。
相关文章:
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操作系统。 另ÿ…...
uniapp中uview组件库丰富的Calendar 日历用法
目录 基本使用 #日历模式 #单个日期模式 #多个日期模式 #日期范围模式 #自定义主题颜色 #自定义文案 #日期最大范围 #是否显示农历 #默认日期 基本使用 通过show绑定一个布尔变量用于打开或收起日历弹窗。通过mode参数指定选择日期模式,包含单选/多选/范围…...
云原生Kubernetes:K8S集群实现容器运行时迁移(docker → containerd) 与 版本升级(v1.23.14 → v1.24.1)
目录 一、理论 1.K8S集群升级 2.环境 3.升级策略 4.master1节点迁移容器运行时(docker → containerd) 5.master2节点迁移容器运行时(docker → containerd) 6.node1节点容器运行时迁移(docker → containerd) 7.升级集群计划(v1.23.14 → v1.24.1&#…...
Redis 数据结构和常用命令
* 代表多个,?代表一个 (不用全部敲出来,按住tab可以自动补全) -2是无效,-1是永久有效 ;贴心小提示:内存非常宝贵,对于一些数据,我们应当给他一些过期时间&a…...
Docker 容器命令总汇
目录 1、创建Docker容器(不启动) 2、创建Docker容器(启动) 3、列出正在运行的容器 4、停止和启动容器 5、重启容器 6、进入容器 7、查看容器信息 8、查看容器日志 9、删除容器和镜像 10、重命名容器 11、从旧容器复制数…...
react + redux 之 美团案例
1.案例展示 2.环境搭建 克隆项目到本地(内置了基础静态组件和模版) git clone http://git.itcast.cn/heimaqianduan/redux-meituan.git 安装所有依赖 npm i 启动mock服务(内置了json-server) npm run serve 启动前端服务 npm…...
【形式语言与自动机/编译原理】CFG-->Greibach-->NPDA(2)
本文将详细讲解《形式语言与自动机》(研究生课程)或《编译原理》(本科生课程)中的上下文无关文法(CFG)转换成Greibach范式,再转成下推自动机(NPDA)识别语言是否可以被接受…...
14.用户管理
目录 1、权限表 1、user表 1.用户列 2.权限列 3.安全列 4.资源控制列 2、db表和host 表 1.用户列 2.权限列 3. tables_priv 表和 columns _priv 表 4.procs_priv 表 2、账户管理 1. 登录和退出MySQL服务器 2、创建普通用户: 1.使用CREATE USER语创建…...
【交叉编译环境】安装arm-linux交叉编译环境到虚拟机教程(简洁版本)
就是看到了好些教程有些繁琐,我就写了一个 我这个解压安装的交叉编译环境是Linaro GCC的一个版本,可以用于在x86_64的主机上编译arm-linux-gnueabihf的目标代码 步骤来了 在你的Ubuntu系统中创建一个目录,例如/usr/local/arm,然后…...
感染了后缀为.[sqlback@memeware.net].2700勒索病毒如何应对?数据能够恢复吗?
导言: 近期,[sqlbackmemeware.net].2700 勒索病毒成为网络安全的一大威胁。该勒索病毒采用高度复杂的加密算法,将用户文件加密并勒索赎金。了解该病毒的特征对于有效恢复被加密数据以及预防进一步感染至关重要。如果受感染的数据确实有恢复的…...
[Linux开发工具]——vim使用
Linux编辑器——vim的使用 一、什么是集成开发环境?二、什么是vim?三、vim的概念四、vim的基本操作五、vim命令模式命令集5.1 移动光标5.2 删除文字5.3 复制粘贴5.4 其他操作 六、vim底行模式命令集6.1 首先在命令模式下shift;进入末行模式。…...
【教学类-43-11】 20231231 3*3宫格数独提取单元格坐标数字的通用模板(做成2*2=4套、3*2=6套)
背景需求: 1、以前做单元格填充,都是制作N个分开的单元格 (表格8) 2、这次做五宫格数独的Word模板,我图方便,就只用了一个大表格,第六行第六列隐藏框线,看上去就是分开的ÿ…...
Spring Boot日志:从Logger到@Slf4j的探秘
写在前面 Hello大家好,今日是2024年的第一天,祝大家元旦快乐🎉 2024第一篇文章从SpringBoot日志开始 文章目录 一、前言二、日志有什么用?三、日志怎么用?四、自定义日志打印💬 常见日志框架说明4.1 在程序…...
英飞凌TC3xx之一起认识GTM系列(六)如何实现GTM与VADC关联的配置
英飞凌TC3xx之一起认识GTM系列(六)如何实现GTM与VADC关联的配置 1 GTM与ADC的接口2 GTM与VADC的连接2.1 VADC 到 GTM 的连接2.1.1 简要介绍2.1.2 应用举例2.2 EVADC到 GTM的连接2.2.1 应用举例3 总结本文介绍实现GTM与VADC的连接性的相关寄存器配置。 1 GTM与ADC的接口 由英…...
【基础】【Python网络爬虫】【6.数据持久化】Excel、Json、Csv 数据保存(附大量案例代码)(建议收藏)
Python网络爬虫基础 数据持久化(数据保存)1. Excel创建数据表批量数据写入读取表格数据案例 - 豆瓣保存 Excel案例 - 网易新闻Excel保存 2. Json数据序列化和反序列化中文指定案例 - 豆瓣保存Json案例 - Json保存 3. Csv写入csv列表数据案例 - 豆瓣列表保…...
王道考研计算机网络——应用层
如何为用户提供服务? CS/P2P 提高域名解析的速度:local name server高速缓存:直接地址映射/低级的域名服务器的地址 本机也有告诉缓存:本机开机的时候从本地域名服务器当中下载域名和地址的对应数据库,放到本地的高…...
Android MVVM 写法
前言 Model:负责数据逻辑 View:负责视图逻辑 ViewModel:负责业务逻辑 持有关系: 1、ViewModel 持有 View 2、ViewModel 持有 Model 3、Model 持有 ViewModel 辅助工具:DataBinding 执行流程:View &g…...
LeetCode 热题 100——283. 移动零
283. 移动零 提示 简单 2.3K 相关企业 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 请注意 ,必须在不复制数组的情况下原地对数组进行操作。 示例 1: 输入: nums [0,1,0,3,12] 输出: [1,…...
neovim调试xv6-riscv过程中索引不到对应头文件问题
大家好,我叫徐锦桐,个人博客地址为www.xujintong.com,github地址为https://github.com/jintongxu。平时记录一下学习计算机过程中获取的知识,还有日常折腾的经验,欢迎大家访问。 和这篇文章neovim调试linux内核过程中索…...
轻量应用服务器与云服务器CVM对比——腾讯云
腾讯云轻量服务器和云服务器CVM该怎么选?不差钱选云服务器CVM,追求性价比选择轻量应用服务器,轻量真优惠呀,活动 https://curl.qcloud.com/oRMoSucP 轻量应用服务器2核2G3M价格62元一年、2核2G4M价格118元一年,540元三…...
椭圆曲线密码学(ECC)
一、ECC算法概述 椭圆曲线密码学(Elliptic Curve Cryptography)是基于椭圆曲线数学理论的公钥密码系统,由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA,ECC在相同安全强度下密钥更短(256位ECC ≈ 3072位RSA…...
【入坑系列】TiDB 强制索引在不同库下不生效问题
文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...
Java入门学习详细版(一)
大家好,Java 学习是一个系统学习的过程,核心原则就是“理论 实践 坚持”,并且需循序渐进,不可过于着急,本篇文章推出的这份详细入门学习资料将带大家从零基础开始,逐步掌握 Java 的核心概念和编程技能。 …...
OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 在 GPU 上对图像执行 均值漂移滤波(Mean Shift Filtering),用于图像分割或平滑处理。 该函数将输入图像中的…...
DingDing机器人群消息推送
文章目录 1 新建机器人2 API文档说明3 代码编写 1 新建机器人 点击群设置 下滑到群管理的机器人,点击进入 添加机器人 选择自定义Webhook服务 点击添加 设置安全设置,详见说明文档 成功后,记录Webhook 2 API文档说明 点击设置说明 查看自…...
mac 安装homebrew (nvm 及git)
mac 安装nvm 及git 万恶之源 mac 安装这些东西离不开Xcode。及homebrew 一、先说安装git步骤 通用: 方法一:使用 Homebrew 安装 Git(推荐) 步骤如下:打开终端(Terminal.app) 1.安装 Homebrew…...
自然语言处理——文本分类
文本分类 传统机器学习方法文本表示向量空间模型 特征选择文档频率互信息信息增益(IG) 分类器设计贝叶斯理论:线性判别函数 文本分类性能评估P-R曲线ROC曲线 将文本文档或句子分类为预定义的类或类别, 有单标签多类别文本分类和多…...
32单片机——基本定时器
STM32F103有众多的定时器,其中包括2个基本定时器(TIM6和TIM7)、4个通用定时器(TIM2~TIM5)、2个高级控制定时器(TIM1和TIM8),这些定时器彼此完全独立,不共享任何资源 1、定…...
yaml读取写入常见错误 (‘cannot represent an object‘, 117)
错误一:yaml.representer.RepresenterError: (‘cannot represent an object’, 117) 出现这个问题一直没找到原因,后面把yaml.safe_dump直接替换成yaml.dump,确实能保存,但出现乱码: 放弃yaml.dump,又切…...
海云安高敏捷信创白盒SCAP入选《中国网络安全细分领域产品名录》
近日,嘶吼安全产业研究院发布《中国网络安全细分领域产品名录》,海云安高敏捷信创白盒(SCAP)成功入选软件供应链安全领域产品名录。 在数字化转型加速的今天,网络安全已成为企业生存与发展的核心基石,为了解…...
