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博客

相关推荐
zhensherlock3 小时前
Protocol Launcher 系列:一键唤起 Windsurf 智能 IDE
javascript·ide·vscode·ai·typescript·github·ai编程
喵手3 小时前
Python爬虫实战:VS Code 扩展市场热门榜单“脱壳”实战!
vscode·爬虫·python·爬虫实战·零基础python爬虫教学·vscode扩展市场热门榜单·vs热门榜单数据采集
咖啡续命又一天3 小时前
PHP 8.2 (Windows) 安装 Redis 扩展最新教程
windows·redis·php
sanshizhang3 小时前
C#如何获取CAD的对象并修改
windows·c#·cad插件
bu_shuo4 小时前
鼠标拖不动桌面的文件与文件夹可能的解决方案
windows·桌面
zhensherlock4 小时前
Protocol Launcher 系列:一键唤起 VSCodium 智能 IDE
javascript·ide·vscode·typescript·开源·编辑器·github
爱喝可乐的老王4 小时前
LangGraph初认识
windows
小钻风33664 小时前
Collections 和 CollectionUtils 详解
windows
FreeFly辉4 小时前
VScode搭建javaDemo
java·vscode