Skip to content

QEMU Windows 虚拟机 SSH 登录

目标

通过 SSH 从宿主机登录 QEMU Windows 虚拟机,实现命令行远程管理(图形页面太卡了)

前置条件

  • 宿主机:Linux/macOS/Windows WSL
  • QEMU 已安装
  • Windows 虚拟机镜像(qcow2 格式)
  • Windows 虚拟机已启动并可操作

配置 QEMU 网络端口转发

修改 QEMU 启动命令

在启动命令中添加网络配置:

bash
-netdev user,id=net0,hostfwd=tcp::2222-:22 \
-device e1000,netdev=net0

完整示例

bash
qemu-system-x86_64 \
  -smp 8 \
  -enable-kvm \
  -m 8G \
  -drive file=windows.qcow2,format=qcow2,if=none,id=disk0 \
  -device virtio-blk-pci,drive=disk0 \

  -netdev user,id=net0,hostfwd=tcp::2222-:22 \
  -device e1000,netdev=net0

端口映射:宿主机 2222 → 虚拟机 22

在 Windows 虚拟机中启用 SSH 服务

以管理员身份打开 PowerShell

安装 OpenSSH Server

powershell
# 检查是否已安装
Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH.Server*'

# 安装 OpenSSH 服务器
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0

启动并设置开机自启

powershell
Start-Service sshd
Set-Service -Name sshd -StartupType Automatic

配置防火墙

powershell
New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH Server' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22

配置 SSH 密钥认证

like any other 复制粘贴公钥

windows的C:\ProgramData\ssh\sshd_config默认关闭了密钥认证, 确保有

PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

对于管理员用户(如 Administrator):

公钥要放在C:\ProgramData\ssh\administrators_authorized_keys
设置正确权限
powershell
# 设置公钥文件路径
$filePath = "C:\ProgramData\ssh\administrators_authorized_keys"

$acl = Get-Acl $filePath
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule("Administrators","FullControl","Allow")
$acl.SetOwner([System.Security.Principal.NTAccount]"Administrators")
$acl.SetAccessRule($rule)
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule("SYSTEM","FullControl","Allow")
$acl.SetAccessRule($rule)
$acl.SetAccessRuleProtection($true, $false)
Set-Acl $filePath $acl
# 重启 SSH 服务
Restart-Service sshd

配置 SSH 客户端别名

编辑 SSH 配置文件

bash
vim ~/.ssh/config

添加配置

conf
Host winvm
    HostName localhost
    User administrator
    Port 2222
    ServerAliveInterval 60

使用别名登录

bash
ssh winvm