ในความพยายามที่จะสร้างสคริปต์ PowerShell ใช้งานระยะไกลฉันวิ่งเข้าไปในสิ่งที่ผมเชื่อว่าเป็นปัญหา hop สองครั้ง ในบทความนั้น Perriman ให้คำอธิบายสั้น ๆ เกี่ยวกับปัญหารวมถึงขั้นตอนเฉพาะในการแก้ไขปัญหา (แทบจะไม่สำคัญถ้าคุณรู้คำสั่ง แต่สำหรับคนที่คุ้นเคยน้อยกว่าตัวฉันเอง
ฉันวิ่งEnable-WSManCredSSP Server
บนเซิร์ฟเวอร์ Win7 โดยไม่มีปัญหา แต่พยายามที่จะรันEnable-WSManCredSSP Client –DelegateComputer <FQDN of the server>
บนไคลเอนต์ Win7 ของฉันสร้างข้อผิดพลาดนี้:
Enable-WSManCredSSP : The client cannot connect to the destination specified
in the request. Verify that the service on the destination is running and
is accepting requests.
Consult the logs and documentation for the WS-Management service running
on the destination, most commonly IIS or WinRM. If the destination
is the WinRM service, run the following com mand on the destination
to analyze and configure the WinRM service: "winrm quickconfig".
กำลังรันwinrm quickconfigยืนยันว่าเซิร์ฟเวอร์ของฉันใช้ WinRM อยู่:
WinRM already is set up to receive requests on this machine.
WinRM already is set up for remote management on this machine.
และGet-WSManCredSSPยืนยันว่าเซิร์ฟเวอร์ของฉันพร้อมที่จะรับข้อมูลรับรองจากลูกค้า:
The machine is not configured to allow delegating fresh credentials.
This computer is configured to receive credentials from a remote client computer.
ฉันยังพบบทความ Boessen ใน WinRMซึ่งเขาอธิบายการตั้งค่า WinRM ทั่วไปและพบหนึ่งชิ้นอาหารอันโอชะที่จะได้รับจุดข้อมูลที่เป็นประโยชน์ในการวินิจฉัย; คำสั่งนี้ทำงานบนไคลเอนต์ใช้เครื่องมือwinrsเพื่อเข้าถึงเซิร์ฟเวอร์จากระยะไกล:
winrs -r:http://<FQDN of my server>:5985 -u:<myDomain>\msorens "dir c:\"
คำสั่งนั้นส่งคืนผลลัพธ์ที่คาดหวังเนื้อหาของไดเรกทอรีรากบนเซิร์ฟเวอร์โดยไม่เกิดปัญหายืนยันว่า FQDN ของฉันถูกต้องและ WinRM นั้นเปิดใช้งาน
Boessen ระบุว่าพอร์ต 5985 เป็นค่าเริ่มต้นสำหรับ Win7; คำสั่งนี้รันบนเซิร์ฟเวอร์ยืนยันค่า 5985:
get-item wsman:\localhost\listener\listener*\port
คำถาม: ทำไมฉันไม่สามารถเรียกใช้งานคำสั่ง Enable-WSManCredSSP ทางฝั่งไคลเอ็นต์ได้
ปรับปรุง 2011.06.07
ฉันพบวิธีแก้ปัญหาสำหรับคำถามด้านบน: เรียกใช้ Enable-PSRemoting , โฆษณาเพื่อกำหนดค่าคอมพิวเตอร์ให้รับคำสั่งระยะไกล, อนุญาตให้Enable-WSManCredSSPบนไคลเอนต์ทำงานได้สำเร็จ! อยากรู้อยากเห็น แต่หน้า manของมันบ่งบอกว่ามันเป็นการกระทำที่แตกต่างกันจำนวนหนึ่งดังนั้นฉันจึงคิดว่าหนึ่งในนั้นทำสิ่งที่ฉันต้องการโดยไม่ตั้งใจ
แต่ฉันก็มาถึงสิ่งกีดขวางบนถนนอื่นเมื่อฉันพยายามใช้การรับรองความถูกต้อง CredSSP นี่คือคำสั่ง:
Invoke-Command { Write-Host "hello, world" } -computername $serverName `
-credential $testCred -Authentication Credssp
และนี่คือคำตอบ:
การเชื่อมต่อกับเซิร์ฟเวอร์ระยะไกลล้มเหลวด้วยข้อความแสดงข้อผิดพลาดต่อไปนี้: ไคลเอ็นต์ WinRM ไม่สามารถดำเนินการตามคำขอได้ นโยบายคอมพิวเตอร์ไม่อนุญาต การมอบหมายข้อมูลประจำตัวของผู้ใช้ไปยังคอมพิวเตอร์เป้าหมาย ใช้ gpedit.msc และดูนโยบายต่อไปนี้: การกำหนดค่าคอมพิวเตอร์ -> เทมเพลตการดูแลระบบ -> ระบบ -> การมอบสิทธิ์ -> อนุญาตการมอบหมายข้อมูลประจำตัวใหม่ ตรวจสอบว่าเปิดใช้งานและ กำหนดค่าด้วย SPN ที่เหมาะสมสำหรับคอมพิวเตอร์เป้าหมาย ตัวอย่างเช่น, สำหรับชื่อคอมพิวเตอร์เป้าหมาย "myserver.domain.com" SPN สามารถเป็นหนึ่งในนั้นได้ ต่อไปนี้: WSMAN /myserver.domain.com หรือ WSMAN / *. domain.com สำหรับข้อมูลเพิ่มเติมดูหัวข้อ about_Remote_Troubleshooting Help
ฉันตรวจสอบการตั้งค่าเช่นเดียวกับข้อความแสดงข้อผิดพลาดที่เป็นประโยชน์อย่างยิ่งที่แนะนำและดูเหมือนว่าฉันจะได้รับการกำหนดค่าอย่างเหมาะสม
คำถามใหม่: ความพยายามเชื่อมต่อระยะไกลนี้กับ CredSSP ล้มเหลวอย่างไร
ในการตอบโปรดระลึกถึงสิ่งต่อไปนี้: ขอให้ฉันบอกกล่าวล่วงหน้าเกี่ยวกับความคิดใด ๆ ที่ฉันรู้ว่าฉันกำลังทำอะไรอยู่ที่นี่