Bagaimana cara mengaktifkan PowerShell Remoting dan SPN untuk Pelaporan SQL Server?


1

Saya telah mencoba pertanyaan ini di Stack Exchange - Administrator Database ( https://dba.stackexchange.com/q/129286/51925 ), tetapi saya tidak mendapat tanggapan, jadi saya akan coba di sini.

Saya berjuang dengan server jauh dengan Layanan Pelaporan SQL Server. Layanan Pelaporan saya dijalankan dengan masing-masing akun domain, dan saya telah menyiapkan SPN untuk mereka ( HTTP/<Machine> <domain>\<user>). Sejauh yang saya bisa lihat, ini secara efektif menonaktifkan menggunakan PowerShell remoting, karena SPN yang WinRM harus menggunakan poin ke akun domain yang digunakan oleh Layanan Pelaporan.

Saya tidak punya masalah menjalankan mis. Get-Service -ComputerName <Machine>, Tetapi jika saya mencoba Get-CimInstance Win32_Service -ComputerName <machine>atau Enter-PsSession <machine>saya mendapatkan kesalahan yang mirip dengan ini:

Get-CimInstance: WinRM tidak dapat memproses permintaan. Kesalahan berikut dengan kode kesalahan 0x80090322 terjadi saat menggunakan otentikasi Kerberos: Terjadi kesalahan keamanan yang tidak diketahui.
Kemungkinan penyebabnya adalah:
-Nama pengguna atau kata sandi yang ditentukan tidak valid.
-Kerberos digunakan ketika tidak ada metode otentikasi dan tidak ada nama pengguna yang ditentukan.
-Kerberos menerima nama pengguna domain, tetapi bukan nama pengguna lokal.
-Nama Pokok Layanan (SPN) untuk nama komputer jarak jauh dan port tidak ada.
-Klien dan komputer jarak jauh berada di domain yang berbeda dan tidak ada kepercayaan antara kedua domain tersebut.
Setelah memeriksa masalah di atas, coba yang berikut ini:
-Periksa Penampil Peristiwa untuk peristiwa yang terkait dengan otentikasi.
-Mengubah metode otentikasi; tambahkan komputer tujuan ke pengaturan konfigurasi WinRM TrustedHosts atau gunakan transport HTTPS.
Perhatikan bahwa komputer dalam daftar TrustedHosts mungkin tidak diautentikasi.
-Untuk informasi lebih lanjut tentang konfigurasi WinRM, jalankan perintah berikut: winrm help config. Pada baris: 1 karakter: 1
+ Get-CimInstance win32_service -ComputerName <machine>
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~
+ CategoryInfo: AuthenticationError: (root \ cimv2: win32_service: String) [Get-CimInstance], CimException
+ FullyQualifiedErrorId: HRESULT 0x8033809d, Microsoft.Manajemen.Infrastruktur .CimCmdlets.GetCimInstanceCommand
+ PSComputerName:<machine>

Jika saya menghapus SPN di salah satu server saya, maka setelah beberapa detik (agak cepat untuk replikasi AD?) Saya dapat menggunakan perintah di atas, tetapi Jika saya kemudian mengatur ulang SPN, perintah gagal lagi setelah beberapa saat.

Beberapa Layanan Pelaporan saya harus dapat meneruskan kredensial, jadi saya harap seseorang dapat membantu saya menyelesaikan dilema ini.

Hari yang baik untuk semua.

Hynne

Jawaban:


2

Saya yakin kami telah menemukan solusinya. Untuk menghindari Layanan Pelaporan dan WinRM yang memperebutkan HTTP SPN, Anda dapat mengatur SPN khusus port untuk WinRM seperti ini:

setspn -S HTTP/<Machine>:<port> <Machine>

Sebaiknya buat SPN untuk nama mesin pendek dan FQDN.
Port default adalah 5985 untuk HTTP dan 5986 untuk HTTPS, tapi saya yakin bisa diatur untuk menggunakan port yang berbeda.

Saat menggunakan WinRM, saya baru mengatur sesi seperti ini:

$CimSessionOption = New-CimSessionOption -EncodePortInServicePrincipalName
$CimSession = New-CimSession -Name ServiceSession -SessionOption $CimSessionOption -ComputerName <Machine>
Get-CimInstance Win32_Service -CimSession $CimSession

Semoga harimu menyenangkan

Hynne


1

Selain jawaban @ carsten-hynne, untuk membuat sesi PowerShell menggunakan Port yang Anda gunakan:

$option = New-PSSessionOption -IncludePortInSPN
$pssession = New-PSSession -ComputerName MYMACHINE -SessionOption $option

Catatan: Pastikan Anda telah menambahkan PORT SPN dari jawaban @ carsten-hynne!

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.