"Bu İş İstasyonu ile Birincil Etki Alanı Arasındaki Güven İlişkisi Başarısız Oldu" [Çözüldü]


Windows sistem yöneticilerini rahatsız eden en yaygın sorunlara güvenildiğinde, Active Directory bilgisayarları görünüşte etki alanından düşüyor. Kötü şöhretli "bu iş istasyonu ile birincil etki alanı arasındaki güven ilişkisi başarısız oldu" hatası çok yaygındır.

Bu kılavuzda, Active Directory'yi yönettiğim 20 yılı aşkın süre boyunca karşılaştığım her püf noktasını ve bunların PowerShell ile nasıl otomatikleştirileceğini öğreneceksiniz.

"Bu iş istasyonu ile birincil etki alanı arasındaki güven ilişkisi başarısız oldu" Hata İletisi

Bir AD etki alanı artık bir bilgisayara güvenmiyorsa, bunun nedeni büyük olasılıkla yerel bilgisayarın sahip olduğu parolanın Active Directory'de depolanan parolayla eşleşmemesidir.

AD'nin bir bilgisayara güvenebilmesi için iki parolanın senkronize olması gerekir. Bunlar senkronize değilse, "bu iş istasyonu ile birincil etki alanı arasındaki güven ilişkisi başarısız oldu". gibi kötü bilinen hata mesajını alırsınız.

Ne yazık ki benim ve diğer sistem yöneticilerinin bulduğu ve %100 işe yarayan tek bir çözüm hiçbir zaman olmadı. Bu kılavuzu bu yüzden yazdım.

Bu kılavuzun, bu sorunu kesin olarak çözmenin ve süreci PowerShell ile otomatikleştirmenin her bir yolu için tek bir depo olması amaçlanmıştır.

Active Directory Bilgisayar Hesabı Parolaları

Active Directory'ye yeni bir bilgisayar eklendiğinde şifreli bir bilgisayar hesabı oluşturulur. Bu şifre varsayılan olarak 30 gün boyunca geçerlidir. 30 gün sonra otomatik olarak değişir. Eğer değişirse ve istemci parolası değişmezse, "bu iş istasyonu ile birincil etki alanı arasındaki güven ilişkisi başarısız oldu" hata mesajını alırsınız.

Mevcut Politikaları Görüntüleme

Grup İlkesi Yönetim Konsolu'nu (GPMC) açarak alan adı genelindeki politikayı görüntüleyebilirsiniz. GPMC'nin içinde, Varsayılan Etki Alanı Politikası'nı tıklayın ve Bilgisayar Yapılandırması -> Windows Ayarları -> Güvenlik Ayarları'na gidin. > Yerel Politikalar > Güvenlik Seçenekleri.

Güvenlik Seçenekleri'ne girdikten sonra Etki alanı üyesi: Maksimum makine hesabı şifresi yaşı adlı politikayı arayın.

AD'ye katılmış bir bilgisayarda regedit'i açın ve HKLM\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters kayıt defteri anahtarına gidin ve aşağıda gösterildiği gibi MaximumPasswordAge değerini bulun.

Siz oradayken, DisablePasswordChange değerini 1 olarak ayarlayarak yerel bilgisayarın şifreyi değiştirmesini tamamen devre dışı bırakabilirsiniz.

Bilgisayar hesabı değiştiğinde hem yerel bilgisayar hem de AD bilgisayar hesabının şifreleri birlikte değiştirilmelidir. AD, kısa bir süre için senkronizasyonun bozulması durumunda mevcut olanı ve öncekini bilir.

Bilgisayar Hesabı Parolası Değiştirme Süreci

İşler normal şekilde çalışırken Netlogon Windows hizmetini kullanarak bilgisayar otomatik olarak bir parola değişikliği başlatır. Bu, bilgisayarın yeniden başlatılması sırasında veya bilgisayar nesnesinin AD'de kimlik doğrulaması yapması gerektiğinde meydana gelir.

Netlogon Windows hizmetini kullanarak yerel bilgisayar bir parola değiştirme sırası başlatır. Bilgisayar ilk olarak etki alanı denetleyicisinde parola değişikliği başlatır. Bu başarılı olursa, yerel parolayı HKLM\SECURITY\Policy\Secrets.ACC kayıt defteri anahtarıyla eşleşecek şekilde değiştirmeye çalışır.

Yerel bilgisayar bir parola değişikliği başlattığından, bilgisayar 30 günden daha uzun süre kapalı veya çevrimdışı olsa bile normalde bu işlem harika çalışır.

Ancak şu durumlarda bir sorun ortaya çıkar:

  • bilgisayar AD bilgisayar hesabını değiştiriyor ancak yerel şifreyi değiştiremiyor
  • bilgisayar Sysprep çalıştırılmadan yeniden görüntüleniyor
  • işletim sistemi yeniden yüklendi ve eski, etkinleştirilmiş AD bilgisayar hesabıyla kimlik doğrulaması yapmaya çalışıyor
  • …ve dahası?

Yukarıdakilerden herhangi biri meydana gelirse, "bu iş istasyonu ile birincil etki alanı arasındaki güven ilişkisi başarısız oldu" hata mesajını göreceksiniz.

Sorunu Doğrulamak

Sorunun var olduğunu öğrendikten sonra, sorunu nasıl tekrarlarsınız veya en azından hangi bilgisayarlarda sorun olduğunu belirlemek için bir yönteme sahip olursunuz? Her bilgisayarda etkileşimli olarak oturum açmayı deneyebilirsiniz, ancak bu ölçeklenebilir değil ve masamdan kalkmak istemiyorum!

"Bu iş istasyonu ile birincil etki alanı arasındaki güven ilişkisi başarısız oldu" hata mesajını tamamen ortadan kaldırmak için etki alanındaki hangi bilgisayarların bu sorunu yaşadığını belirlemek için hem yerel hem de uzaktan çalıştırabileceğimiz bir komut dosyası oluşturalım.

Her şeyden önce, etki alanı kimlik doğrulamasının çalışmadığını varsaydığınız için, yöneticiler grubunda bir yerel kullanıcı hesabı bilmeniz gerekir. Umarım yerel yönetici şifrenizi biliyorsunuzdur!

nltest (Komut Satırı Aracı)

nltest, bir bilgisayar için güven ilişkisini test edecek eski tarz bir komut satırı aracıdır. Bu araç, RSAT'yi yüklediğinizde yüklenir veya doğrudan etki alanı denetleyicisinde kullanılabilir.

Bilgisayarda oturum açtığınızda bilgisayardaki güven ilişkisini aşağıdakileri çalıştırarak doğrulayabilirsiniz:

> nltest /sc_verify:<your domain FQDN>

UYARI: nltest yalnızca başlatıldığı kullanıcı bağlamında çalıştığı için bu yöntem önerilmez. Bilgisayarın güveni bozulduysa ve yerel kullanıcı olarak oturum açtıysanız, bilgisayar, yerel kullanıcının kimlik bilgilerini kullanarak etki alanına bağlanmayı deneyecektir. Bu, erişim reddedildi hatasıyla sonuçlanır.

netdom (Komut Satırı Aracı)

netdom, bir güven ilişkisini doğrulamak için kullanabileceğiniz başka bir komut satırı aracıdır. Bu araç ayrıca RSAT'yi yüklediğinizde de yüklenir veya doğrudan etki alanı denetleyicisinde kullanılabilir.

Aşağıdakileri sağlayarak netdom doğrulama kullanarak bir güveni doğrulayabilirsiniz:

  • doğrulanacak bilgisayar adının adı
  • Alanın FQDN'si
  • isteğin kimliğini doğrulamak için kullanıcı adı
  • kullanıcı hesabının şifresi

Aşağıda bir örnek verilmiştir:

> netdom verify MYCOMPUTER /Domain:domain.local /UserO:abertram /PasswordO:*

PasswordO parametresine * değeri girildiğinde, netdom şifre isteyecektir.

Test-ComputerSecureChannel (PowerShell)

"Bu iş istasyonu ile birincil etki alanı arasındaki güven ilişkisi başarısız oldu" sorununu çözmenin en iyi yollarından biri Test-ComputerSecureChannel cmdlet'ini kullanmaktır. Bu PowerShell cmdlet'i Windows 10 ile birlikte gelir ve kullanımı daha kolaydır.

Test-ComputerSecureChannel cmdlet'i Windows 10 bilgisayarda yerel olarak çalışır. Bilgisayarda etkileşimli olarak oturum açtığınızda bir PowerShell konsolu açın ve herhangi bir parametre olmadan Test-ComputerSecureChannel'ı çalıştırın. Güvenin geçerli olup olmadığına bağlı olarak Doğru veya Yanlış değerini döndürür.

PS51> Test-ComputerSecureChannel
True

Sunucu parametresini kullanarak şifrelerin senkronize olduğunu doğrulamak için belirli bir etki alanı denetleyicisini de belirtebilirsiniz.

PS51> Test-ComputerSecureChannel -Server 'DC.domain.local'
False

Bu cmdlet'in kullanımı basittir ve Onar seçeneğine sahiptir, ancak düzeltme bölümü için bunun bir gösterimini kaydedeceğiz.

Kontrol etmek istediğiniz bilgisayarların yerel yönetici şifresini biliyorsanız ve bu bilgisayarlarda PowerShell Uzaktan İletişim etkinleştirilmişse Invoke-Command cmdlet'ini de kullanabilirsiniz. Invoke-Command cmdlet'ini kullanarak Test-ComputerSecureChannel'ı bir veya daha fazla bilgisayarda aynı anda uzaktan çalıştırabilirsiniz.

PS51> Invoke-Command -ComputerName PC1, PC2, PC3 -ScriptBlock { Test-ComputerSecureChannel }

Güven İlişkilerini Toplu Olarak Kontrol Etme

Artık bir güven ilişkisini uzaktan nasıl kontrol edeceğinizi bildiğinize göre, işte tüm AD bilgisayarlarınızı kontrol etmek için kullanabileceğiniz bir kod pasajı! Bu komut dosyasında ilk önce bilgisayarın çevrimiçi olduğundan emin olmak için test yapıyorum. Değilse, Çevrimdışı durumuna döner. Eğer öyleyse, her bilgisayarda Test-ComputerSecureChannel'ı çalıştıracak ve True veya False değerini döndürecektir.

$localCredential = Get-Credential
 
@(Get-AdComputer -Filter *).foreach({
 
   $output = @{ ComputerName = $_.Name }
 
   if (-not (Test-Connection -ComputerName $_.Name -Quiet -Count 1)) { $output.Status = 'Offline'
   } else {
       $trustStatus = Invoke-Command -ComputerName $_.Name -ScriptBlock { Test-ComputerSecureChannel } -Credential $localCredential
       $output.Status = $trustStatus
   }
 
   [pscustomobject]$output
 
})

Sorunu bilmek ve anlamak ilk adımdır ama nasıl çözersiniz? Artık yerel bilgisayarda depolanan bilgisayar hesabının, AD'de depolanan bilgisayar hesabıyla aynı olması gerektiğini biliyorsunuz.

"Bu iş istasyonu ile birincil etki alanı arasındaki güven ilişkisi başarısız oldu" sorunu için birçok farklı "çözüm" vardır. Bu çözümler GUI, PowerShell veya eski tarz komut satırı araçları aracılığıyla gerçekleştirilebilir.

  1. AD'deki bilgisayar hesabı parolasını sıfırlayın
  2. Yerel bilgisayar hesabı parolasını sıfırlama
  3. Windows bilgisayarından ayrılın ve yeniden katılın
  4. Bilgisayar hesabını tamamen kaldırın ve Windows bilgisayarına yeniden katılın

Bu çok fazla seçenek! Bu kılavuzda, bu sorunu PowerShell ve komut satırı araçlarıyla (tamlık sağlamak için) düzeltmeye odaklanacağız. Zaten PowerShell kullanmıyorsanız kullanmalısınız!

Sorunu Çözme: Bilgisayar Parolalarını Sıfırlama

netdom (Komut Satırı Aracı)

Eski tarz netdom komut satırı aracı kullanılarak güven onarılabilir ve "bu iş istasyonu ile birincil etki alanı arasındaki güven ilişkisi başarısız oldu" hata mesajı ortadan kaldırılabilir. Bilgisayarda yerel olarak yönetici kullanıcı olarak oturum açtıysanız, aşağıda gösterildiği gibi parola sıfırlama sırasını başlatmak için netdom resetpwd komutunu çalıştırabilirsiniz.

Bu örnekte:

  • DC etki alanı denetleyicisinin adıdır
  • abertram, bilgisayar hesabını sıfırlama haklarına sahip Active Directory kullanıcı hesabının adıdır
  • *, kullanıcı hesabı şifresi için şifre isteyecek olan bir yer tutucudur.
> netdom resetpwd /s:DC /ud:abertram /pd:*

Reset-ComputerMachinePassword (PowerShell)

Bir güven ilişkisini düzeltmenin en iyi yollarından biri Reset-ComputerMachinePassword cmdlet'ini kullanmaktır. Bu cmdlet yerel bilgisayarda çalıştırılır ve bir parola sıfırlama sırası başlatır. Sözdizimi daha basit olamazdı.

PS51> Reset-ComputerMachinePassword

Sıfırlanacak belirli bir DC belirtmek isterseniz, Sunucu parametresini ve bir seçenek kimlik bilgisini kullanarak bunu belirtebilirsiniz (varsayılan olarak yerel kullanıcı için olacaktır).

Aşağıdaki örnekte bir AD kullanıcı adı ve parolası sorulacak ve yerel bilgisayardaki ve DC etki alanı denetleyicisindeki parolayı sıfırlama girişiminde bulunulacaktır.

PS51> Reset-ComputerMachinePassword -Server DC -Credential (Get-Credential)

Bu, eğer bilgisayarda PowerShell Uzaktan İletişim mevcutsa Invoke-Command kullanılarak uzaktan da çalıştırılabilir. Aşağıda bilgisayardaki yerel yönetici hesabının kullanıcı adını ve şifresini alıyorum. Ayrıca bu bilgisayarın AD hesap parolasını sıfırlama haklarına sahip olan kimlik bilgilerini de alıyorum. Daha sonra $using yapısını kullanarak $domainCredential'ı uzak oturuma aktarıyorum.

$localAdminCredential = Get-Credential
$domainCredential = Get-Credential

PS51> Invoke-Command -Computername MYCOMPUTER -Credential $localAdminCredential -ScriptBlock { Reset-ComputerMachinePassword -Server DC -Credential $using:domainCredential }

Bunun, bilgisayar hesabı Active Directory'den kaldırılmış olsa bile işe yarayacağını unutmayın. Aynı adda bir bilgisayar hesabı oluşturduğunuzda Reset-ComputerMachinePassword, şifrenin senkronize edilmesini sağlayacaktır.

Yerel Bilgisayar Hesabı Parolalarını Toplu Olarak Sıfırlama

Birçok bilgisayarda aynı anda "bu iş istasyonu ile birincil etki alanı arasındaki güven ilişkisi başarısız oldu" hatasıyla ilgilenmek ister misiniz? Sorun değil. Kullanışlı bir foreach döngüsü kullanarak Reset-ComputerMachinePassword'u da toplu olarak çalıştırabiliriz.

$localAdminCredential = Get-Credential
$domainCredential = Get-Credential
 
@(Get-AdComputer -Filter *).foreach({
 
   $output = @{ ComputerName = $_.Name }
 
   if (-not (Test-Connection -ComputerName $_.Name -Quiet -Count 1)) { $output.Status = 'Offline'
   } else {
       $pwChangeOutput = Invoke-Command -Computername $_.Name -Credential $localAdminCredential -ScriptBlock { Reset-ComputerMachinePassword -Server DC -Credential $using:domainCredential }
       $output.PasswordChangeOutput = $pwChangeOutput
   }
 
   [pscustomobject]$output
 
})

Test-ComputerSecureChannel -Onarım (PowerShell)

Şifre değiştirme işlemini başlatmanın bir diğer yolu da Test-ComputerSecureChannel'ı çalıştırmak ancak bu sefer Onar seçeneğini kullanmaktır. Anlayabildiğim kadarıyla bu işlem Reset-ComputerMachinePassword kullanımıyla aynıdır. Bilgisayar konsolunda Onar parametresini ve Kimlik Bilgisi parametresini kullanın.

PS51> Test-ComputerSecureChannel -Repair -Credential (Get-Credential)

Burada her zaman Kimlik Bilgisi parametresini kullandığınızdan emin olun. Bunu yapmazsanız, nltest yardımcı programına benzer şekilde, yerel hesabı kullanmaya çalışacak ve çalışmayacaktır.

Güven İlişkilerini Toplu Olarak Onarın

Bu komutu kullandığımız kullanışlı foreach döngüsüne bırakın; Bob sizin amcandır!

$localAdminCredential = Get-Credential
$domainCredential = Get-Credential
 
@(Get-AdComputer -Filter *).foreach({
 
   $output = @{ ComputerName = $_.Name }
 
   if (-not (Test-Connection -ComputerName $_.Name -Quiet -Count 1)) { $output.Status = 'Offline'
   } else {
       $repairOutput = Invoke-Command -Computername $_.Name -Credential $localAdminCredential -ScriptBlock { Test-ComputerSecureChannel -Repair -Credential $using:domainCredential }
       $output.RepairOutput = $repairOutput
   }
 
   [pscustomobject]$output
 
})

Sorunu Çözme: Etki Alanına Yeniden Katılma

Bilgisayar hesabı şifrelerini sıfırlamak işinize yaramazsa her zaman nükleer bir seçenek vardır. Bir bilgisayarı Active Directory etki alanına yeniden birleştirebilirsiniz. Her zaman gerekli olmasa da bu yaklaşımı kullanmak zorunda kaldığım zamanlar da oldu.

Bağlantıyı kesmenin gerekli olmadığına dair bazı raporlar duyduğumu unutmayın. Sadece yeni bir birleşmeyi zorlayarak kurtulabilirsiniz. YMMV.

Şunları yapabilirsiniz:

  • bilgisayarda yerel bir yönetici hesabı aracılığıyla oturum açın
  • Sistem Özellikleri'ne gidin
  • Değiştir'i tıklayın
  • onu bir çalışma grubuna ayarla
  • yeniden başlat
  • etki alanına geri ayarla

Olabilir'den nasıl bahsettiğime dikkat edin. Bunu yapma. Bunu PowerShell ile otomatikleştirmek zaman kaybıdır.

Bir etki alanının bağlantısını kesmek için PowerShell'i kullanabileceğinizi ve bir etki alanına katılmak için PowerShell'i kullanabileceğinizi bulduğum iki yol var.

CIM'i kullanma

Win32_ComputerSystem CIM sınıfını kullanarak PowerShell ile bir etki alanına katılabilir (ve bağlantısını kesebilirsiniz). Bu sınıfta, bir bilgisayarın UnJoinDomainOrWorkgroup() ve JoinDomainOrWorkGroup adlı bir etki alanına katılmasını ve bağlantısını kesmenizi sağlayan iki yöntem vardır.

Bu CIM olduğundan, bunu yerel olarak çalıştırabildiğiniz kadar kolay bir şekilde uzaktan da çalıştırabilirsiniz. Bunu uzaktan, masanızın rahatlığında çalıştırmayı tercih edeceğinizi düşündüğümden, işte tam da bunu yapan bir kod pasajı.

“Bu iş istasyonu ile birincil etki alanı arasındaki güven ilişkisi başarısız oldu” hatası ortadan kalktı!

$computername = 'PITA'

$instance = Get-CimInstance -ComputerName $computername -ClassName 'Win32_ComputerSystem'

$invCimParams = @{
    MethodName = 'UnjoinDomainOrWorkGroup'
    Arguments = @{ FUnjoinOptions=0;Username="Administrator";Password="mypassword" }
}
$instance | Invoke-CimMethod @invCimParams

Yukarıdaki FUnjoinOptions parametresine dikkat edin. Burada 4'ü belirtmeyi seçtim. Bu, bir bilgisayarın bağlantısını manuel olarak keserken varsayılan davranışı gerçekleştirir. Bu seçenek, Active Directory'deki bilgisayar hesabını devre dışı bırakır (eğer bulabilirse). Bu davranışı istemiyorsanız buradaki 0 seçeneğini kullanabilirsiniz.

Bilgisayarın bağlantısı kesildiğinde, JoinDomainOrWorkGroup() yöntemini kullanarak etki alanına yeniden katılabilirsiniz.

$computername = 'PITA'

$instance = Get-CimInstance -ComputerName $computername -ClassName 'Win32_ComputerSystem'

$invCimParams = @{
    MethodName = 'JoinDomainOrWorkGroup'
    Arguments = @{ FJoinOptions=3;Name=mydomain.local;Username="mydomain\domainuser";Password="mypassword" }
}
$instance | Invoke-CimMethod @invCimParams

Yukarıdaki FJoinOptions parametresine dikkat edin. Burada 3'ü belirtmeyi seçtim. Bu, bir bilgisayara manuel olarak katılırken varsayılan davranışı gerçekleştirir. Bu seçenek bir AD bilgisayar hesabı oluşturur. Belirli bir kuruluş birimine ekleme gibi diğer birkaç seçeneği, joinDomainOrWorkgroup belgeleri aracılığıyla bulabilirsiniz.

İPUCU: Ayrıca, Get-CimInstance'ta BilgisayarAdı parametresi aracılığıyla birden çok bilgisayarı belirterek, bu yöntemle birçok bilgisayarın bağlantısını kesebilir ve yeniden katılabilirsiniz.

Bilgisayarı Kaldır ve Bilgisayar Ekle Cmdlet'lerini Kullanma

PowerShell ile bir bilgisayarın etki alanından bağlantısını kesmek ve bir bilgisayara katılmak için yerleşik PowerShell cmdlet'lerini de kullanabilirsiniz. Remove-Computer ve Add-Computer cmdlet'lerini kullanabilirsiniz.

PowerShell ile bir bilgisayarın bağlantısını kesmek için bilgisayar konsolunda oturum açın ve Remove-Computer cmdlet'ini kullanın. Etki alanı kimlik bilgilerine, bilgisayarla bağlantıyı kesme izinlerini sağlayın. Ayrıca, katılmadan sonra yeniden başlamayı zorlamak için Yeniden Başlat parametresini ve onay istememesi için Zorla parametresini de belirleyebilirsiniz.

PS51> Remove-Computer -UnjoinDomaincredential (Get-Credential) -Restart -Force

Bilgisayar yeniden başlatıldıktan sonra, bilgisayarı PowerShell ile etki alanına eklemek için Bilgisayar Ekle cmdlet'ini kullanabilirsiniz. BilgisayarAdı parametresini sağlayarak Bilgisayar Ekle cmdlet'ini uzaktan kullanabilirsiniz. Ayrıca bağlantı kurmak için yerel kullanıcı kimlik bilgilerini ve etki alanında kimlik doğrulaması yapmak için etki alanı kimlik bilgilerini kullanırsınız.

Tekrar geldiğinde, artık "bu iş istasyonu ile birincil etki alanı arasındaki güven ilişkisi başarısız oldu" hata mesajını almayacağınızı umuyoruz.

$localCredential = Get-Credential
$domainCredential = Get-Credential

Add-Computer -ComputerName PITA -LocalCredential $localCredential -DomainName domain.local -Credential $domainCredential -Restart -Force

Otomatik Etki Alanından Ayrılma ve Yeniden Katılma

Bu işlemi çok fazla yapmak zorunda kaldığım için her şeyi sizin için yapan bir PowerShell betiği geliştirdim. Eğer ona bilgisayarın adını verirseniz, şunları yapacaktır:

  • Bilgisayarın bağlantısını kes
  • Yeniden başlatın ve geri gelmeyi bekleyin
  • Bilgisayara katıl
  • Yeniden başlatın ve geri gelmeyi bekleyin

Bu betiği GitHub aracılığıyla deneyebilirsiniz.

Özet

Artık sorunu tam olarak anlamış olmanız ve kötü şöhretli "Bu iş istasyonu ile birincil etki alanı arasındaki güven ilişkisi başarısız oldu" hata mesajına yönelik birden fazla çözüme sahip olmanız gerekir. Umarım bu kılavuz size bazı bilgiler sunmuştur ve bilgisayarların etki alanının dışına çıkması sorununa kendi çözümlerinizi bulmanıza olanak sağlamıştır!

Daha fazla okuma

İlgili diğer yayınlara göz atmayı unutmayın!

  • Çok Sayıda Active Directory Komut Dosyası: Gelin ve Alın!
  • Get-AdUser: PowerShell ile Active Directory kullanıcılarını bulma
  • PowerShell ve CSV Dosyası Kullanılarak AD Nasıl Eşitlenir?

İlgili makaleler