WinRMを設定

ターゲットマシンでのWinRMの設定ガイドの例

概要

サーバーと環境の設定はお客様側の作業になります。参照とテスト用に、以下のPowerShellスクリプトをターゲットマシンで実行し、自己署名証明書でWinRMを有効にすることができます。本番環境では、パブリック認証局を使用して証明書を作成することをお勧めします。

# WinRMを有効化
Set-NetConnectionProfile -NetworkCategory Private
winrm quickconfig -force
Enable-PSRemoting -force

# 非SSLトラフィックを許可(ポート5985)
winrm set winrm/config/service '@{AllowUnencrypted="true"}'
winrm set winrm/config/service/auth '@{Basic="true"}'
winrm set winrm/config/client/auth '@{Basic="true"}'

# SSL用の証明書を作成(ポート5986)
$Hostname = [System.Net.Dns]::GetHostByName($env:computerName).HostName
$Thumbprint = (New-SelfSignedCertificate -Subject "CN=$Hostname" -TextExtension '2.5.29.37={text}1.3.6.1.5.5.7.3.1').Thumbprint
$A = '@{Hostname="'+$Hostname+'"; CertificateThumbprint="'+$Thumbprint+'"}'
winrm create winrm/config/Listener?Address=*+Transport=HTTPS $A

# ファイアウォール規則
New-NetFirewallRule -DisplayName "WinRM" -Group "Windows Remote Management" -Program "System" `
  -Protocol TCP -LocalPort "5985" -Profile Domain,Private
New-NetFirewallRule -DisplayName "WinRM" -Group "Windows Remote Management" -Program "System" `
  -Protocol TCP -LocalPort "5985" -Profile Public
New-NetFirewallRule -DisplayName "WinRM Secure" -Group "Windows Remote Management" -Program "System" `
  -Protocol TCP -LocalPort "5986" -Profile Domain,Private
New-NetFirewallRule -DisplayName "WinRM Secure" -Group "Windows Remote Management" -Program "System" `
  -Protocol TCP -LocalPort "5986" -Profile Public

WindowsマシンでWinRMを設定するために、このスクリプトが実行する内容の詳細を以下に示します。

  1. ネットワーク接続プロファイルをプライベートに設定:

    Set-NetConnectionProfile -NetworkCategory Private
  2. WinRMを設定して有効化:

```powershell
winrm quickconfig -force
Enable-PSRemoting -force
```
  1. ポート5985で非SSL(暗号化されていない)トラフィックを許可:

```powershell
winrm set winrm/config/service '@{AllowUnencrypted="true"}'
winrm set winrm/config/service/auth '@{Basic="true"}'
winrm set winrm/config/client/auth '@{Basic="true"}'
```
  1. ポート5986で暗号化トラフィック用の自己署名SSL証明書を作成:

```powershell
$Hostname = [System.Net.Dns]::GetHostByName($env:computerName).HostName
$Thumbprint = (New-SelfSignedCertificate -Subject "CN=$Hostname" -TextExtension '2.5.29.37={text}1.3.6.1.5.5.7.3.1').Thumbprint
$A = '@{Hostname="'+$Hostname+'"; CertificateThumbprint="'+$Thumbprint+'"}'
winrm create winrm/config/Listener?Address=*+Transport=HTTPS $A
```
  1. ポート5985(非SSL)および5986(SSL)で受信トラフィックを許可するWindowsファイアウォール規則を作成:

```powershell
New-NetFirewallRule -DisplayName "WinRM" -Group "Windows Remote Management" -Program "System" `
  -Protocol TCP -LocalPort "5985" -Profile Domain,Private
New-NetFirewallRule -DisplayName "WinRM" -Group "Windows Remote Management" -Program "System" `
  -Protocol TCP -LocalPort "5985" -Profile Public
New-NetFirewallRule -DisplayName "WinRM Secure" -Group "Windows Remote Management" -Program "System" `
  -Protocol TCP -LocalPort "5986" -Profile Domain,Private
New-NetFirewallRule -DisplayName "WinRM Secure" -Group "Windows Remote Management" -Program "System" `
  -Protocol TCP -LocalPort "5986" -Profile Public
```

このスクリプトを実行すると、WinRMは、暗号化されていないリモート接続(ポート5985)と暗号化されたリモート接続(ポート5986)の両方を許可するように設定されます。さらに、これらのポートで受信トラフィックを許可するWindowsファイアウォール規則が作成されます。

以下のコマンドで、Windowsサーバーから、PowerShellを使用してターゲットマシンへの接続をテストできます。

Test-NetConnection -ComputerName <host> -Port <port>

最終更新