Software

未加入網域狀態下使用 powershell 連線

按照一般流程建立完 winrm 之後在連線的時候發生了一個錯誤

Enter-PSSession : 連線到遠端伺服器 192.168.1.1 失敗,傳回下列錯誤訊息: WinRM 用戶端無法處理該要求。若驗證配置與 Kerberos 不同,或是用戶端電腦沒有加入網域, 則必須使用 HTTPS 傳輸,或是將目標電腦新增到 TrustedHosts 組態設定中。 請使用 winrm.cmd 來設定 TrustedHosts。請注意,可能不會驗證在 TrustedHosts 清單中的電腦。 您可以執行下列命令,以取得相關的詳細資訊: winrm help config。 如需詳細資訊,請參閱 about_Remote_Troubleshooting 說明主題。

發現原來兩台電腦在沒有建立網域的狀態底下會需要使用 HTTPS 連線,所以連線指令要改成

Enter-PSSession 192.168.1.1 -Credential (Get-Credential) -UseSSL

然後又發生了另一個錯誤

Enter-PSSession : [192.168.1.1] 連線到遠端伺服器 192.168.1.1 失敗,傳回下列錯誤訊息: 用戶端無法連線到要求中指定的目
的地。 請確定目的地上的服務正在執行並接受要求。 請參閱在目的地 (最常見的是 IIS 或 WinRM) 上執行 WS-Management 服務的記
錄與文件。 如果目的地是 WinRM 服務,請在目的地執行下列命令來分析和設定 WinRM 服務: "winrm quickconfig". 如需詳細資訊,
請參閱 about_Remote_Troubleshooting 說明主題。

看起來應該是被控端沒有建立 SSL 的憑證及連線,所以原本的流程要重新做一下調整

  1. 開啟 winrm 設定

    winrm quickconfig
  2. 建立憑證

    New-SelfSignedCertificate -DnsName "HOSTNAME/IP","FQDN"
  3. 建立 winrm ssl 連線 (這邊要注意必須使用 CMD 不能使用 powershell)

    winrm create winrm/config/Listener?Address=*+Transport=HTTPS @{Hostname="HOSTNAME/IP";CertificateThumbprint="憑證產生的thumbprint"}
  4. 重新啟動 winrm

    Restart-Service WinRM

再重新登入一次

Enter-PSSession 192.168.1.1 -Credential (Get-Credential) -UseSSL

這個時候會出現另一個錯誤訊息

Enter-PSSession : 連線到遠端伺服器 192.168.1.1 失敗,傳回下列錯誤訊息: 目的電腦 (192.168.1.1:5986) 上的伺服器憑證
具有下列錯誤:
該 SSL 憑證是由不明的憑證授權單位所簽署。 如需詳細資訊,請參閱 about_Remote_Troubleshooting 說明主題。

訊息上面解釋自發的憑證為不明的授權單位,所以無法認證
因此如果是自發憑證我們就使用另一個參數來略過檢查

Enter-PSSession -computername 192.168.1.1 -Credential (Get-Credential) -UseSSL -SessionOption (New-PsSessionOption -SkipCACheck)

然後這樣就可以連接成功了