Nedávno jsem řešil problém, kdy jsem u jednoho zákazníka psal sadu scriptů. Bylo třeba, aby z důvodu jednoduchosti spouštění nebyl žádán o přihlašovací údaje.
Pro spoustu z Vás jednoduché zadání, které asi není potřeba rozvádět. Ale dostal jsem se do situace, kdy přihlášení přes Webového klienta fungovalo, ale přes PowerCLI nikoli.
Pojďme k popisu situace, která k tomu vedla (z jasných security důvodů nebudu psát názvy skutečných domén):
vCenter server appliance byla připojena do AD domény “vclass.local”. DNS název vCenter domény byl ale trochu jiný – “lab.vclass.local”.
Při připojování přes WebClienta po doinstalování Enhanced Authentication Plugin vše fungovalo. Ovšem při spuštění PowerCLI scriptu a připojování přes
Connect-VIserver vc.lab.vclass.local
vyskočilo okno pro zadání credentials.
Proč by mělo vyskočit okno, když jsem na Windows stroji přihlášen doménovým účtem, který má potřebná oprávnění? Ve WebClientu to přece funguje.
Nejprve pro objasnění “záhady” je třeba zapnout při připojování detailnější logování
Connect-VIserver vc.lab.vclass.local -Verbose
Výstup je pak následující:
VERBOSE: Attempting to connect using SSPI VERBOSE: Reversely resolved 'vc.lab.vclass.local' to 'vc.lab.vclass.local' VERBOSE: SSPI Kerberos: Acquired credentials for user 'VCLASS\Administrator' VERBOSE: SSPI Kerberos: InitializeSecurityContext failed for target 'host/vc.lab.vclass.local'. Error code: 0x80090303 VERBOSE: Connect using SSPI was unsuccessful Connect-VIServer : 12.10.2018 9:00:10 Connect-VIServer Could not determine user name and/or password fo r server vc.lab.vclass.local At line:1 char:1 + Connect-VIServer vc.lab.vclass.local -Verbose + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [Connect-VIServer], ViServerConnectionException + FullyQualifiedErrorId : ViCore_Login_CredentialNotFound,VMware.VimAutomation.ViCore.Cmdlets.Commands.ConnectVISe rver
Důležitý je předposlední řádek začínající VERBOSE
VERBOSE: SSPI Kerberos: InitializeSecurityContext failed for target ‘host/vc.lab.vclass.local’. Error code: 0x80090303
Je to způsobeno tím, že objekt “vc.vclass.local” v AD – tak je vCenter připojen a pojmenován v AD – nemá odpovídající SPN záznam, který je zvýrazněn na řádku výše.
Aby jsme toto napravili, tak stačí velmi jednoduše na počítači, který je připojen do domény a má AD tools doinstalované, spustit jeden příkaz.
C:\> setspn -A "HOST/vc.lab.vclass.local" vc Checking domain DC=vclass,DC=local Registering ServicePrincipalNames for CN=VC,CN=Computers,DC=vclass,DC=local HOST/vc.lab.vclass.local Updated object
Je potřeba samozřejmě spouštět pod uživatelem, který má odpovídající oprávnění v AD.
Kontrola:
C:\>setspn -l VCLASS\vc Registered ServicePrincipalNames for CN=VC,CN=Computers,DC=vclass,DC=local: HOST/vc.lab.vclass.local HOST/vc HOST/vc.vclass.local
Pro jistotu je potřeba vCenter appliance restartovat.
Pak už můžete ověřit, že se podaří přihlásit na vCenter bez nutnosti zadávat credentials
PS C:\> Connect-VIServer vc.lab.vclass.local -Verbose VERBOSE: Attempting to connect using SSPI VERBOSE: Reversely resolved 'vc.lab.vclass.local' to 'vc.lab.vclass.local' VERBOSE: SSPI Kerberos: Acquired credentials for user 'VCLASS\Administrator' VERBOSE: SSPI Kerberos: Successful call to InitializeSecurityContext for target 'host/vc.lab.vclass.local' VERBOSE: Connected successfully using SSPI Name Port User ---- ---- ---- vc.lab.vclass.local 443 VCLASS\Administrator