Dalam mencoba membuat skrip PowerShell menggunakan remoting, saya menemukan apa yang saya yakini sebagai masalah double-hop . Dalam artikel itu, Perriman memberikan deskripsi singkat tentang masalah tersebut serta langkah-langkah spesifik untuk menyelesaikan masalah (hampir sepele jika Anda tahu perintahnya, tetapi bagi seseorang yang kurang familiar seperti saya, informasi itu sangat berharga!).
Saya berlari Enable-WSManCredSSP Server
di server Win7 saya tanpa insiden, tetapi mencoba untuk berjalan Enable-WSManCredSSP Client –DelegateComputer <FQDN of the server>
di klien Win7 saya menghasilkan kesalahan ini:
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".
Menjalankan winrm quickconfig mengonfirmasi server saya menjalankan WinRM:
WinRM already is set up to receive requests on this machine.
WinRM already is set up for remote management on this machine.
Dan Get-WSManCredSSP mengonfirmasi server saya siap menerima kredensial dari klien:
The machine is not configured to allow delegating fresh credentials.
This computer is configured to receive credentials from a remote client computer.
Saya juga menemukan artikel Boessen tentang WinRM di mana ia menjelaskan pengaturan WinRM umum dan menemukan satu berita menarik untuk mendapatkan titik data yang berguna dalam diagnosis; perintah ini dijalankan pada klien menggunakan alat winrs untuk mengakses server dari jarak jauh:
winrs -r:http://<FQDN of my server>:5985 -u:<myDomain>\msorens "dir c:\"
Perintah itu mengembalikan hasil yang diharapkan, isi direktori root di server, tanpa insiden, membenarkan bahwa FQDN saya benar dan WinRM diaktifkan.
Boessen menunjukkan port 5985 adalah default untuk Win7; perintah ini dijalankan di server mengonfirmasi nilai 5985:
get-item wsman:\localhost\listener\listener*\port
Pertanyaannya: Mengapa saya tidak dapat menjalankan perintah Enable-WSManCredSSP di sisi klien?
2011.06.07 Pembaruan
Saya menemukan solusi untuk pertanyaan di atas: menjalankan Enable-PSRemoting , diiklankan untuk mengkonfigurasi komputer untuk menerima perintah jarak jauh, memungkinkan Enable-WSManCredSSP pada klien untuk bekerja dengan sukses! Ingin tahu, tetapi halaman manualnya menunjukkan bahwa ia melakukan sejumlah tindakan berbeda, jadi saya menganggap salah satu dari mereka secara tidak sengaja melakukan apa yang saya butuhkan.
Tapi kemudian saya mencapai penghalang jalan lain ketika saya mencoba menggunakan otentikasi CredSSP. Inilah perintahnya:
Invoke-Command { Write-Host "hello, world" } -computername $serverName `
-credential $testCred -Authentication Credssp
Dan inilah jawabannya:
Menyambung ke server jarak jauh gagal dengan pesan kesalahan berikut: Klien WinRM tidak dapat memproses permintaan. Kebijakan komputer tidak memungkinkan delegasi kredensial pengguna ke komputer target. Gunakan gpedit.msc dan lihat kebijakan berikut: Konfigurasi Komputer -> Template Administratif -> Sistem -> Delegasi Kredensial -> Izinkan Mendelegasikan Kredensial Baru. Verifikasi bahwa itu diaktifkan dan dikonfigurasi dengan SPN yang sesuai untuk komputer target. Sebagai contoh, untuk nama komputer target "myserver.domain.com", SPN dapat menjadi salah satu dari berikut ini: WSMAN /myserver.domain.com atau WSMAN / *. domain.com. Untuk informasi lebih lanjut, lihat topik Bantuan tentang_Remote_Pemecahan Masalah.
Saya memverifikasi pengaturan seperti yang disarankan oleh pesan kesalahan yang sangat membantu ini, dan sepertinya saya sudah terkonfigurasi dengan benar.
Pertanyaan baru: Apa yang gagal dilakukan koneksi jarak jauh dengan CredSSP ini?
Dalam menjawab, harap perhatikan hal-hal berikut: Biarkan saya membuang terlebih dahulu gagasan bahwa saya tahu apa yang saya lakukan di sini, terlepas dari segala penampilan yang bertentangan. :-) Windows admin bukanlah bidang keahlian saya!
sumber
Jawaban:
Saya kembali ke hal ini setelah jeda singkat untuk melihat lagi dengan mata segar (baik milik saya maupun rekan kerja) dan memutuskan untuk kembali ke dasar lagi:
Pada klien saya dieksekusi (di shell administrator):
Di server saya mengeksekusi (di shell administrator):
Keduanya mengembalikan output normal yang menunjukkan CredSSP sekarang "benar".
Saya kemudian menggunakan kode berolahraga berikut untuk menjalani peningkatan tingkat kompleksitas:
Semua itu ada dalam skrip run.ps1 saya sehingga transkripnya berjalan sebagai berikut (dan ini berjalan dalam shell non- administrator):
Sebelumnya, hanya dasar, jarak jauh, dan kredensial yang berfungsi. Sekarang semua 5 bekerja. Wah!
sumber
Ketika saya harus melakukan ini, ini adalah apa yang saya lakukan untuk membuatnya bekerja (mungkin juga ada beberapa pengaturan GPO, tetapi sepertinya Anda sudah membahasnya).
Untuk mengaktifkan CLIENT untuk menggunakan CredSSP untuk terhubung ke mesin apa pun di domain:
Kemudian saya menjalankan yang berikut pada setiap mesin target (server) untuk mengaktifkan otentikasi CredSSP:
Ini tentu saja mengharuskan Anda menjalankan skrip dengan izin yang sesuai. Ini berhasil bagi saya - saya harap ini membantu Anda.
sumber
Invoke-Command { Write-Host "hello, world" } -computername $serverName -credential $testCred
). Jadi otentikasi CredSSP adalah masalah utama.Saya dapat tempat tinggal migrasi satu VM dari satu server hyper-v 2012R2 ke yang lain, tetapi tidak dapat bermigrasi kembali. (Saya mencoba menggunakan SAMBA 4.2 sebagai pengontrol domain saya dan ingin melihat apakah saya bisa hidup bermigrasi dengan CredSSP karena saya tidak dapat menggunakan delegasi terbatas dengan Samba4).
Akhirnya saya pergi ke hyper-v yang berfungsi dan menyalin entri registri di hklm: \ SOFTWARE \ Policies \ Microsoft \ Windows \ CredentialsDelegation ke hyper-v yang tidak berfungsi. Bekerja dengan baik setelah itu.
sumber