原文链接:https://www.microcharon.com/tech/475.html,此贴仅是整理加收藏。

前提条件

  • 操作系统: Windows Server 2022 Datacenter
  • 权限: 所有操作均在管理员权限下进行

实践操作

配置HTTP侦听器

远程服务器配置WinRM

在服务器管理器中可以快速配置远程管理,即WinRM。

快速配置WinRM

  1. 快速配置WinRM,创建默认的监听器并开启防火墙例外:

    Enable-PSRemoting -Force
  2. 查看WinRM服务是否在运行

    Get-Service WinRM
  3. 查看WinRM监听器

    winrm enumerate winrm/config/listener

    输出示例:

    Listener
        Address = *
        Transport = HTTP
        Port = 5985
        Hostname
        Enabled = true
        URLPrefix = wsman
        CertificateThumbprint
        ListeningOn = 10.0.4.11, 127.0.0.1, ::1, fe80::5dc1:2b3b:f22c:ed79%7

配置防火墙规则允许WinRM HTTP流量

WinRM默认生成规则仅保证公用网络中的同一子网的连接。为方便调试,新增防火墙规则保证所有网络可连接测试。

  1. 创建新的防火墙规则允许WinRM HTTP入站流量(端口5985)

    New-NetFirewallRule -DisplayName "WinRM HTTP 5985" -Description "允许 WinRM HTTP 流量(端口 5985)" -Direction Inbound -Protocol TCP -LocalPort 5985 -Action Allow -Profile Any
  2. 若为云服务器,则在服务商处也同样放行。例如在腾讯云的轻量应用服务器上设置防火墙。

腾讯云防火墙设置

本地环境配置TrustedHosts

  1. 查看WinRM服务状态是否在运行

    Get-Service WinRM
  2. 开启WinRM服务

    Start-Service WinRM
  3. 确保WinRM服务在Running状态

    Get-Service WinRM
  4. 配置TrustedHosts

    # 查看当前的TrustedHosts配置
    Get-Item WSMan:\localhost\Client\TrustedHosts
    
    # 添加远程主机到TrustedHosts列表
    Set-Item WSMan:\localhost\Client\TrustedHosts -Value "*.microcharon.com" -Force
    
    # 若不起作用,则重启WinRM服务以应用更改
    Restart-Service WinRM
  5. 再次查看TrustedHosts配置

    Get-Item WSMan:\localhost\Client\TrustedHosts

测试端口连通性并验证连接

  1. 确保远程服务器上的5985端口是打开的

    Test-NetConnection -ComputerName test.microcharon.com -Port 5985
  2. 连接远程服务器,输入管理员凭据

    Enter-PSSession -ComputerName "test.microcharon.com" -Port 5985 -Credential $cred

配置HTTPS侦听器

自签名方式创建泛域名证书

  1. 在远程服务器上自签证书

    $notAfter = (Get-Date).AddYears(5)
    $domainName = "*.microcharon.com"
    $cert = New-SelfSignedCertificate -DnsName $domainName -CertStoreLocation "cert:\LocalMachine\My" -NotAfter $notAfter
    $thumbprint = $cert.Thumbprint
    Write-Host "证书指纹: $thumbprint"
    Write-Host "证书有效期至: $($cert.NotAfter)"
  2. 配置WinRM使用该证书

    New-Item -Path WSMan:\LocalHost\Listener -Transport HTTPS -Address * -CertificateThumbPrint $thumbprint -Force
  3. 验证监听器配置

    winrm enumerate winrm/config/listener
  4. 启用防火墙规则允许WinRM HTTPS流量

    New-NetFirewallRule -DisplayName "WinRM HTTPS 5986" -Description "允许 WinRM HTTPS 流量(端口 5986)" -Direction Inbound -Protocol TCP -LocalPort 5986 -Action Allow -Profile Any
  5. 导出证书并在客户端使用

    Export-Certificate -Cert "cert:\LocalMachine\My\$thumbprint" -FilePath "C:\Temp\winrm.cer"
  6. 在客户端计算机上导入证书

    Import-Certificate -FilePath "C:\Users\micro\Downloads\winrm.cer" -CertStoreLocation "cert:\LocalMachine\Root\"
  7. 测试端口连通性并验证连接

    Test-NetConnection -ComputerName test.microcharon.com -Port 5986
    Enter-PSSession -ComputerName "test.microcharon.com" -Port 5986 -UseSSL -Credential $cred

备注

  • WinRM认证错误:检查凭据,或将目标机器添加到TrustedHosts配置设置中。
  • 使用5986端口时,需追加-UseSSL参数。

参考资料

标签: WinRM, PowerShell, Windows Server, 远程, 命令

添加新评论