Windows电脑使用VSCode远程控制Windows主机方法记录

Windows电脑使用VSCode远程控制Windows主机方法记录

Host与Client

什么是SSH

SSH (Secure Shell) 是一种加密的网络传输协议

什么是Client(客户端)

  1. Client 是发起请求的一方, 即您手里的这台电脑.

  2. 它是指令的发送者, 在 VS Code 中编写代码、点击连接远程的操作都在 Client 端完成;

  3. 在免密登录配置中, 私钥 (Private Key) 必须存放在 Client 端, 它是证明身份的唯一钥匙;

什么是 Host(主机/服务端)

  1. Host 是接收请求并执行任务的一方, 即远程服务器;
  2. 在免密登录配置中, 公钥 (Public Key) 必须存放在 Host 端的 authorized_keys 文件中, 它相当于 Host 门上的一把锁芯。

在被需要远程控制的主机上安装SSH

使用PowerShell安装OpenSSH

  1. 以管理员身份启动PowerShell;
  2. 查看OpenSSH是否可用, 运行以下cmdlet;
cmd 复制代码
Windows PowerShell
版权所有 (C) Microsoft Corporation。保留所有权利。
尝试新的跨平台 PowerShell https://aka.ms/pscore6
PS C:\Users\Administrator> 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
  1. 从上述返回的内容中可以看到, Client客户端已安装, 而Server服务端未安装, 使用以下命令安装
cmd 复制代码
PS C:\Users\Administrator> Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0


Path          :
Online        : True
RestartNeeded : False
  1. 安装成功.

SSH服务器初始配置

cmd 复制代码
# 启动 SSH 服务
Start-Service sshd

# 设置服务自动启动
# OPTIONAL but recommended:
Set-Service -Name sshd -StartupType 'Automatic'

# 检查服务状态
Get-Service sshd

返回结果

cmd 复制代码
PS C:\Users\Administrator> # 启动 SSH 服务
>> Start-Service sshd
>>
>> # 设置服务自动启动
>> # OPTIONAL but recommended:
>> Set-Service -Name sshd -StartupType 'Automatic'
>>
>> # 检查服务状态
>> Get-Service sshd

Status   Name               DisplayName
------   ----               -----------
Running  sshd               OpenSSH SSH Server


PS C:\Users\Administrator>

远程连接

cmd 复制代码
ssh username@servername
cmd 复制代码
PS C:\Users\Administrator> New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22


Name                          : sshd
DisplayName                   : OpenSSH Server (sshd)
Description                   :
DisplayGroup                  :
Group                         :
Enabled                       : True
Profile                       : Any
Platform                      : {}
Direction                     : Inbound
Action                        : Allow
EdgeTraversalPolicy           : Block
LooseSourceMapping            : False
LocalOnlyMapping              : False
Owner                         :
PrimaryStatus                 : OK
Status                        : 已从存储区成功分析规则。 (65536)
EnforcementStatus             : NotApplicable
PolicyStoreSource             : PersistentStore
PolicyStoreSourceType         : Local
RemoteDynamicKeywordAddresses :
PolicyAppId                   :
cmd 复制代码
C:\Users\bushuo>ssh ubuntu_ros
ssh: connect to host 192.168.1.108 port 22: Connection timed out

C:\Users\bushuo>

连接失败

注释掉sshd_config文件的最后两行, 该文件位置

C:\ProgramData\ssh

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

相关参考链接

(17 封私信 / 63 条消息) vscode Remote-ssh 远程控制windows主机 - 知乎

配置SSH密钥对

  1. 在PowerShell中输入下列内容, 一路回车就可
cmd 复制代码
ssh-keygen -t rsa -b 4096

这条命令是用于创建 SSH 密钥对 的标注指令, 它是实现 Client(本地电脑)Host(远程服务器) 之间免密登录的基础.

以下是该命令中每个参数的详细拆解:

1. ssh-keygen (核心程序)

  • 含义:这是生成、管理和转换认证密钥的工具.
  • 作用 :它会同时生成两个文件:一个私钥 (保存在 Client 端, 绝不能泄露)和一个公钥(上传到 Host 端).

2. -t rsa (加密算法类型)

  • 含义-t 代表 Type (类型), rsa 是一种经典的非对称加密算法.
  • 原理 :RSA 依靠大质数分解的数学难题来保证安全. 虽然现在有更现代的算法(如 ed25519), 但 rsa 的兼容性最广, 几乎所有的 SSH 服务器都支持它.

3. -b 4096 (密钥长度/强度)

  • 含义-b 代表 Bits (比特位数), 数字 4096 表示生成的密钥长度.
  • 重要性 :默认的 RSA 长度通常是 2048 位, 指定为 4096 位可以极大地提升破解难度, 提供更高级别的安全性, 是目前工业界的标准推荐配置.

执行后的交互过程

当你按下回车后, 系统会询问你三个问题:

  1. Enter file in which to save the key :询问存放在哪. 直接回车, 默认会存在 C:\Users\用户名\.ssh\id_rsa.
  2. Enter passphrase :询问是否给钥匙再加一把密码锁

生成后的结果与用途

执行完此命令后, 你的 .ssh 文件夹里会出现两个文件:

  • id_rsa :这是你的私钥. VS Code 会用它来证明你的身份。
  • id_rsa.pub :这是你的公钥 . 你需要把它的内容复制到远程 Host 的 authorized_keys 文件中.

一些操作

连接失败

cmd 复制代码
C:\Users\bushuo>ssh Administrator@CHINAMI-02A5A7L
The authenticity of host 'chinami-02a5a7l (192.168.0.188)' can't be established.
ED25519 key fingerprint is SHA256:Il3w1bTVdSgGWpt0UMf7iL31a/H4eF1CS3eTbOheGhc.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'chinami-02a5a7l' (ED25519) to the list of known hosts.
Administrator@chinami-02a5a7l's password:
Permission denied, please try again.
Administrator@chinami-02a5a7l's password:

需要输入密码才能登录, 但这台主机没有密码, 无法登录.

远程主机生成密钥

cmd 复制代码
PS C:\Users\Administrator> ssh-keygen
Generating public/private ed25519 key pair.
Enter file in which to save the key (C:\Users\Administrator/.ssh/id_ed25519): ssh_config.ssh
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in ssh_config.ssh
Your public key has been saved in ssh_config.ssh.pub
The key fingerprint is:
SHA256:edMXesXYsAkQzbDviVwNO5DgmlabXyR4bDu5xPBpwQo administrator@CHINAMI-02A5A7L
The key's randomart image is:
+--[ED25519 256]--+
|        . +*. .  |
|       . = oo. B |
|      E = @ o = +|
|       = @ @ = o |
|      + S % O +  |
|     .   * O =   |
|          = o    |
|                 |
|                 |
+----[SHA256]-----+
PS C:\Users\Administrator>

公钥粘贴到被控制的远程电脑主机上C:\Users\uaername\.ssh\authorized_keys上, 再次运行ssh Administrator@CHINAMI-02A5A7L

参考链接

(17 封私信 / 63 条消息) vscode Remote-ssh 远程控制windows主机 - 知乎

VS Code 使用 OpenSSH 远程连接 Windows 开发完整指南 | 我的博客

设置 SSH 通过密钥登录 | 菜鸟教程

Windows 系统上配置 SSH 密钥验证,实现无密码登录_windows配置ssh密钥-CSDN博客

相关推荐
ι:4 小时前
NUC12 Pro 安装 Ubuntu 24.04 LTS 详细教程
linux·windows·ubuntu·nuc
YCOSA20254 小时前
微软宣布将于10月7日举行Windows与Surface发布会,聚焦“Windows、NVIDIA RTX Spark、Surface,以及更广泛PC生态”
windows
Source.Liu4 小时前
【A11】 labelprinter(Tauri 版)新建步骤
windows·rust
Databuff5 小时前
五款主流 SSH 免费工具介绍
运维·ssh·运维开发
Punchline2786 小时前
解决 Windows 环境变量 Path 设置时提示“字符太长”的完整指南
windows·环境变量·path
00后程序员张6 小时前
Xcode vs KXApp,体积差几十G,选轻量方案还是完整工具链?
ide·vscode·ios·objective-c·个人开发·swift·敏捷流程
chushiyunen6 小时前
claude code笔记(二)、claude桌面端(内网不好用)
windows
d_benhua7 小时前
以太网测试步骤
windows
冯一川7 小时前
DeepSeek在Windows系统上部署
windows·python
解道Jdon8 小时前
JDK 27发布:紧凑对象头、G1默认、量子安全TLS
ide·windows·git·svn·eclipse·github·visual studio