Windows电脑使用VSCode远程控制Windows主机方法记录
Host与Client
什么是SSH
SSH (Secure Shell) 是一种加密的网络传输协议
什么是Client(客户端)
-
Client 是发起请求的一方, 即您手里的这台电脑.
-
它是指令的发送者, 在 VS Code 中编写代码、点击
连接远程的操作都在 Client 端完成; -
在免密登录配置中, 私钥 (Private Key) 必须存放在 Client 端, 它是证明身份的
唯一钥匙;
什么是 Host(主机/服务端)
- Host 是接收请求并执行任务的一方, 即远程服务器;
- 在免密登录配置中, 公钥 (Public Key) 必须存放在 Host 端的 authorized_keys 文件中, 它相当于 Host 门上的一把锁芯。
在被需要远程控制的主机上安装SSH
使用PowerShell安装OpenSSH
- 以管理员身份启动
PowerShell; - 查看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
- 从上述返回的内容中可以看到, Client客户端已安装, 而Server服务端未安装, 使用以下命令安装
cmd
PS C:\Users\Administrator> Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
Path :
Online : True
RestartNeeded : False
- 安装成功.
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密钥对
- 在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位可以极大地提升破解难度, 提供更高级别的安全性, 是目前工业界的标准推荐配置.
执行后的交互过程
当你按下回车后, 系统会询问你三个问题:
- Enter file in which to save the key :询问存放在哪. 直接回车, 默认会存在
C:\Users\用户名\.ssh\id_rsa. - 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主机 - 知乎