如何通过Azure或AWS控制台连接到Windows Server 2022无桌面版实例?

Windows Server 2022 无桌面版(Server Core)没有图形界面,因此无法通过远程桌面协议(RDP)直接连接。必须通过命令行工具进行连接和管理。以下是通过 Azure 和 AWS 控制台连接到该实例的完整步骤:


✅ 前提条件

  • 已创建 Windows Server 2022 Core 实例
  • 实例已配置安全组/防火墙规则,允许 SSH 或 RDP 端口(通常 3389)
  • 已获取管理员凭据(用户名 + 密码)
  • 本地机器安装了相应客户端工具(见下文)

⚠️ 注意:Core 版本默认禁用远程桌面服务(RDP),需先启用。


🔧 方案一:通过 PowerShell Remoting(推荐)

步骤 1:在本地安装 PowerShell

确保本地机器(Windows/macOS/Linux)已安装 PowerShell(7+ 版本)。

步骤 2:启用远程管理(首次连接前需在本地执行)

由于 Core 默认未启用 WinRM,你需要通过以下方式之一先启用它:

方法 A:通过云厂商提供的“运行命令”功能(最常用)

▶ Azure:使用“运行命令”(Run Command)
  1. 登录 Azure 门户
  2. 进入你的 虚拟机 → 运行命令(Run Command)
  3. 选择 RunPowerShellScript
  4. 输入以下脚本启用 WinRM 并配置自动启动:
# 启用 WinRM 服务
winrm quickconfig -q
winrm set winrm/config/service '@{AllowUnencrypted="true"}'
winrm set winrm/config/service/auth '@{Basic="true"}'
winrm set winrm/config/service '@{AllowUnencrypted="true"}'
winrm set winrm/config/winrs '@{MaxMemoryPerShellMB="512"}'

# 设置 WinRM 自启动
Set-Service -Name WinRM -StartupType Automatic
Start-Service -Name WinRM

# 可选:配置防火墙规则(如果未自动开放)
New-NetFirewallRule -DisplayName "WinRM HTTP" -Direction Inbound -Protocol TCP -LocalPort 5985 -Action Allow

点击 运行,等待完成。

▶ AWS:使用 Systems Manager Run Command
  1. 登录 AWS 控制台
  2. 进入 Systems Manager → Run Command
  3. 创建新命令,选择 Run Power Shell Script
  4. 粘贴上述相同脚本
  5. 选择目标实例,点击 运行

💡 若未安装 SSM Agent,请先通过用户数据(User Data)安装:

# 添加到 EC2 启动时的用户数据
<powershell>
Install-PackageProvider -Name NuGet -Force
Install-Module -Name AmazonSSMAgent -Force
Start-Service -Name AmazonSSMAgent
Set-Service -Name AmazonSSMAgent -StartupType Automatic
</powershell>

方法 B:通过临时 RDP 连接(不推荐用于生产)

如果已启用 RDP(如通过自定义镜像或脚本),可先用 RDP 登录,然后在 Core 中手动运行:

winrm quickconfig -q
Set-Service WinRM -StartupType Automatic
Start-Service WinRM

步骤 3:建立 PowerShell 远程会话

在本地 PowerShell 中执行:

$vmIP = "your-instance-public-ip"
$username = "Administrator"
$password = ConvertTo-SecureString "YourPassword" -AsPlainText -Force
$credential = New-Object System.Management.Automation.PSCredential($username, $password)

# 建立连接(使用 HTTPS 更安全,但 Core 默认用 HTTP 5985)
Enter-PSSession -ComputerName $vmIP -Credential $credential -Authentication Basic -UseSSL:$false

✅ 成功后将看到类似 [your-instance] PS C:> 的提示符,即可执行所有服务器管理命令。


🛠 替代方案:SSH(仅当启用 OpenSSH 服务器时)

Windows Server 2022 Core 支持 OpenSSH,但需预先安装并配置:

启用 OpenSSH 服务器(通过运行命令)

Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
Start-Service sshd
Set-Service -Name sshd -StartupType 'Automatic'
Enable-PSRemoting -Force
Install-WSMan

然后从本地使用:

ssh Administrator@<public-ip>

首次连接会提示接受主机密钥,输入密码后进入 shell。


🔐 安全建议

  • 避免长期开启 AllowUnencrypted="true",建议使用 HTTPS + 证书SSH over TLS
  • 限制源 IP 到管理机地址(安全组/NSG 规则)
  • 定期轮换密码或使用 Managed Identity / Key Vault 认证(Azure)或 IAM Roles for SSM(AWS)
  • 考虑使用 Azure ArcAWS Systems Manager Session Manager 实现免凭据连接

❓ 常见问题排查

问题 解决方案
Access denied 检查防火墙、WinRM 是否运行、凭据是否正确
Connection refused 确认 5985/5986 端口开放,服务已启动
Certificate error 添加 -SkipCertificateCheck(仅限测试环境)
无法使用 RDP Core 不支持 GUI,必须用命令行;可后续安装 Desktop Experience 镜像重装

需要我为你提供一键部署脚本(含自动化启用 WinRM + 连接测试),或针对特定云厂商生成完整 Terraform/CloudFormation 模板吗?

云服务器