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
  1. 配置windows防火墙入站规则sshd,开放XX端口(XX端口可自定义):
netsh advfirewall firewall add rule name=sshd dir=in action=allow protocol=TCP localport=XX
  1. 配置sshd服务开机自启动:
sc config sshd start= auto

sshd服务常用命令

  1. 开启sshd服务:
net start sshd
  1. 关闭sshd服务:
net stop sshd
  1. 验证服务是否开启:
    查看本机的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了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/282830.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

普中STM32-PZ6806L 使用FlyMcu串口烧录程序

简介 我的串口下载电路坏掉了, 所以研究了下如何通过USB转TTL进行程序的下载, 为后续Bootloader部分做准备;连接 我的板几乎是十年前买的, 所以电路与现有网上的资料有些差异, 所以仅供参考 USB 转 TTL线 与开发板 连接, 如图图中 ①, 需要去掉第一个…

基于STM/APM32F072制作的J-Link OB调试器项目验证

基于STM/APM32F072制作的J-Link OB调试器项目验证 📍本文基于github项目:https://github.com/geekchun/Jlink-OB/tree/master⚡申明:仅限个人研究学习,无其他用途。🌿采用该项目提供的固件,烧录STM32f4时信…

WeNet语音识别调用通义千问

WeNet语音识别调用通义千问 WeNet语音识别对通义千问(Qwen-72B-Chat Bot)调用,首先通过WeNet将用户的语音输入转录为文本,然后将此文本输入通用问答模型以获取答案。 本人原创作品,体验一下 连续对话 WeNet语音识别…

Zookeeper实现分布式锁和注册中心

目录 分布式锁 实现方式 分布式锁场景如何选择Redis和zookeeper 用InterProcessMutex实现分布式锁 zookeeper实现注册中心 分布式锁 实现方式 数据库唯一索引Redis的setnxZookeeper创建临时节点及监听机制Zookeeper创建临时有序节点 分布式锁场景如何选择Redis和zookeepe…

为即将到来的量子攻击做好准备的 4 个步骤

当谈到网络和技术领域时,一场风暴正在酝酿——这场风暴有可能摧毁我们数字安全的根本结构。这场风暴被称为 Q-Day,是即将到来的量子计算时代的简写,届时量子计算机的功能将使最复杂的加密算法变得过时。 这场量子革命正以惊人的速度到来&am…

RFC6749-OAuth2.0

前言 最近在项目中需要实现SSO(单点登录)功能,以实现一处注册,即可在任何平台之间登录的功能。我们项目中并没有直接对接第三方认证系统而是通过集成keycloak 完成一系类安全协议的对接工作。如果我们在代码级别自己完成各种安全协议的对接是一项十分大的工程。不仅要走统一的…

论文解读:Coordinate Attention for Efficient Mobile Network Design(CVPR2021)

论文前言 原理其实很简单,但是论文作者说得很抽象,时间紧的建议直接看3.1中原理简述CBMA、原理简述CBMA以及3.2中原理简述coordinate attention block即可。 Abstract 最近关于mobile network设计的研究已经证明了通道注意(例如,the Squee…

【解决复杂链式任务打造全能助手】大模型思维链 CoT 应用:langchain 大模型 结合 做 AutoGPT

大模型思维链 CoT 应用:langchain 大模型 结合 做 AutoGPT,解决复杂链式任务打造全能助手 思维链 CoTlangchainlangchain 大模型结合打造 AutoGPT 思维链 CoT 最初的语言模型都是基于经验的,只能根据词汇之间的相关性输出答案,根…

现阶段SDH,MPLS-VPN,MSTP等广域网几种互联技术介绍

广域网也称远程网,通常跨接很大的物理范围,所覆盖的范围从几十公里到几千公里,它能连接多个城市或国家,或横跨几个洲并能提供远距离通信,形成国际性的远程网络。广域网可以分为公共传输网络、专用传输网络和无线传输网…

学习SpringCloud微服务

SpringCloud 微服务单体框架微服务框架SpringCloud微服务拆分微服务差分原则拆分商品服务拆分购物车服务拆分用户服务拆分交易服务拆分支付服务服务调用RestTemplate远程调用 微服务拆分总结 服务治理注册中心Nacos注册中心服务注册服务发现 OpenFeign实现远程调用快速入门引入…

面向对象基础-类与对象-封装

1、类与对象 1.1 概念 类:类是一个抽象的概念,用于描述一类对象的特点。 对象:根据类的概念所创造的实体。 【思考】一个对象可以没有对应的类嘛? 不可以,因为必须现有类才能创建对象。 1.2 类的内容 类中最基础的内容…

【SD】一致性角色 - 同一人物 不同姿势 - 2

首先生成4张不同姿势的图片 masterpiece,high quality,(white background:1.6),(simple background:1.4),1gril,solo,black footwear,black hair,brown eyes,closed mouth,full body,glasses,jacket,long hair,long sleeves,lookig at viewer,plaid,plaid skirt,pleated shirt,…

12.31_黑马数据结构与算法笔记Java

目录 345 设计跳表 Leetcode 1206 346 设计最小栈 Leetcode 155 347 设计端网址 Leetcode 355 348 设计推特 Leetcode 355 349 股票系列问题 Leetcode 121 350 股票系列问题 Leetcode 122 351 股票系列问题 Leetcode 714 352 股票系列问题 Leetcode 309 353 股票系列问…

接入Cloudflare后Nginx和Django获取用户真实IP的办法

可以用Nginx的real_ip的相关命令来实现这个需求。 01-real_ip命令集详解 real_ip命令的使用分为两个步骤: 01-1-设置从哪些代理IP获取真实IP 第1个步骤:通过set_real_ip_from命令设置从哪些代理IP请求获取真实的IP,比如下面的命令: set_real_ip_from…

Visual Studio 2015 中 SDL2 开发环境的搭建

Visual Studio 2015 中 SDL2 开发环境的搭建 Visual Studio 2015 中 SDL2 开发环境的搭建新建控制台工程拷贝并配置 SDL2 开发文件拷贝 SDL2 开发文件配置 SDL2 开发文件 测试SDL2 开发文件的下载链接 Visual Studio 2015 中 SDL2 开发环境的搭建 新建控制台工程 新建 Win32 …

Vue.js和Node.js的关系--类比Java系列

首先我们看一张图 这里我们类比了Java的jvm和JavaScript的node.js。 可以看到,node.js是基础,提供了基础的编译执行的能力。vue,js是实际上定义了一种他自己的代码格式,以加速开发。

CDH 6.3.2集成flink 1.18 zookeeper版本不匹配Flink-yarn启动失败

CDH 6.3.2集成flink 1.18 zookeeper版本不匹配Flink-yarn不能正常启动,而在CHD Web页面,flink日志报错提示不明确,不能定位具体错误。CM WEB启动失败错误日志如下图所示: CM查看完成错误日志 [31/Dec/2023 10:45:09 0000] 26000…

Java设计模式实战:从If-Else到策略+工厂方法的演变

引言 可能很多开发者,虽然理解了设计模式的概念,但在实际工作中应用却是另一回事。本篇文章旨在用一个具体的案例来展示如何将设计模式应用到工作的编程问题中。正所谓:“纸上得来终觉浅,绝知此事要躬行。”理论的学习固然重要&a…

若依generator模块解读,Java小白入门(七)

模块基本内容 若依的核心模块基本除了安全那一块,现在还是剩下一个比较重要的章节,是ruoyi-generator,就是代码根据模板来生成,这一块很有必要进行深入了解,本章节我们弄清楚基本框架,以后,我们会在这一块…

回顾 2023,展望 2024

by zhengkai.blog.csdn.net 项目与心得 今年最大的项目和心得,非GCP莫属,作为全球顶尖的云平台, GCP有他的优势,也有很多难用的地方。但是作为当时的一个strategic solution,我们的印度本地化项目必须使用GCP&#xf…