2012-08-24 18 views
5

Birkaç makinede uzaktan yönetimi kurmaya çalışıyorum. Uzak makinedeki komutları bilgisayarımdan başarıyla yürütebilirim, ancak herkesin bunu yapmasını istemiyorum.Powershell winrm Trusted Hosts çalışmıyor

Uzak bilgisayardaki güvenilen ana bilgisayarları ayarlamayı denedim ve hizmeti yeniden başlattım, ancak hiçbir şey yapmıyor gibi görünüyor. Uzak makinede Örneğin

:

winrm set winrm/config/client '@{TrustedHosts="someIncorrectName"}' 

Sonra winrm hizmetini yeniden başlatın.

Neden uzaktaki komutları dizüstü bilgisayarımdan çalıştırabilirim? Komutun infaz edilmemesi engellenmeli mi?

Ben komutunu şu şekilde çalıştırıyorum:

$ cred get-kimlik bilgisi alanı/kullanıcı adı kullanılarak oluşturulmuştur
Invoke-Command -cn remoteMachine -Credential $cred -scriptblock {get-process} 

.

TrustedHosts hakkında birkaç şey okudum ve yaptıklarıyla ilgili olarak çelişen raporlar veriyor gibi görünüyorlar. Bazı kişiler, komutların Güvenilir Ana Bilgisayarlar listesinde listelenmeyen bilgisayarlarda yürütülmesini önlediğini söyler. Diğerleri, bu makinede komutları çalıştırabilecek bilgisayarların bir listesi olduğunu söylüyor.

MSDN şöyle diyor: "Güvenilir olan uzak bilgisayarların listesini belirtir." Bu, ikinci seçenek (makinede komutları çalıştırabilen bilgisayarların bir listesi) olduğunu ima eder gibi görünüyor.

Neyi yanlış yapıyorum?

Teşekkür

cevap

6

TrustedHosts Eğer öyle düşündüğün yapmaz. Unix .rhosts'ın tersine, bu ayar uzak sunucu uç noktasından değil PowerShell istemcisi içindir. en bulduğunu nedeni budur: o dinleyici alakalı olsaydı

WSMan:\localhost\Client 

, bu Service düğümünün altında olacaktır.

diğer cevabı üzerine dokunur gibi, bu tipik güvenilmeyen uzak makineye bir NTLM parola-cevabım ya da temel kimlik doğrulama girişimi göndermesini müşteri önlemek için sigara etki veya karışık ortamlarda kullanılır. Niye ya? Çünkü uzak bir hileli sunucu bu bilgiyi yakalayabilir ve ağınızı tehlikeye atabilir. Karma bir ortamda bulunduğunuzda, tek korunma SSL'dir ve birçoğu AllowUnencrypted = $false aracılığıyla Client düğümünde WSMAN sürücüsünün devre dışı bırakılmasını tercih edebilir.

Peki, gelen bağlantıları nasıl kısıtlıyorsunuz? Bağlantıyı şimdi yapmalı ve uzak sunucuda WSMAN:\localhost\Service düğümü altına bakmaya başlamış olmalısınız. Bunu yaparsanız, göreceksiniz:

WSManConfig: Microsoft.WSMan.Management\WSMan::localhost\Service 

Type   Name       SourceOfValue Value                  
----   ----       ------------- -----                  
System.String RootSDDL          ...  
System.String MaxConcurrentOperations      4294967295                 
System.String MaxConcurrentOperationsPerUser     1500                   
System.String EnumerationTimeoutms       240000                  
System.String MaxConnections         300                   
System.String MaxPacketRetrievalTimeSeconds     120                   
System.String AllowUnencrypted        false                  
Container  Auth                              
Container  DefaultPorts                            
System.String IPv4Filter          *                   
System.String IPv6Filter          *                   
System.String EnableCompatibilityHttpList...     false                  
System.String EnableCompatibilityHttpsLis...     false                  
System.String CertificateThumbprint                          
System.String AllowRemoteAccess        true                   

Şimdi bu listeyi aşağı bakıyor, sen IPv4Filter ve IPv6Filter gibi bazı pertinently adlandırılmış özellikleri göreceksiniz. Bunların ne yaptığını tahmin et ;-)