AWS : Windows Remote Desktop - Zugriff nicht möglich
Wir hatten hier das Problem das die RDP Session nicht mehr zu starten ist.
Es ist immer dieser Fehler aufgetreten.
Die Maschinen laufen in der AWS und leider war der Session Manager auch noch nicht am Start. z.G. war auf der Maschine der SSM-Agent bereits installiert, wenn nicht kann man das so erledigen, natürlich bevor RDP kaputt ist (Install SSM Agent on Windows)
Die Maschine muss natürlich in SSM aufgeführt sein. Sollte das nicht der Fall sein einfach mal überprüfen ob die richtigen IAM Rollen auf den Maschinen angewendet werden. Für eine schnelle Fehlerbehebung hatte ich kurzfristig SSMFullAccess verwendet.
Jetzt startet man den AWS System Manager und führt dort das Dokument "AWS-RunPowerShellScript" gegen die kaputte Maschine aus.
Unter Run a command kann man im Feld Command parameters kann man ein Powershell Script rein werfen das gegen die Maschine läuft.
hier das skript
Alle folgenden Skript werden nach dem selben Muster ausgeführt.
1.) Auslesen des Zertifikates
2.) Setzen des Zertifikates
3.) Restart des RDP Dienstes
Kurz noch zur Erklärung , mit diesem Powershell hab ich mir die Events angeschaut die mich auf die richtige Fährte gebracht haben.
Es ist immer dieser Fehler aufgetreten.
Die Maschinen laufen in der AWS und leider war der Session Manager auch noch nicht am Start. z.G. war auf der Maschine der SSM-Agent bereits installiert, wenn nicht kann man das so erledigen, natürlich bevor RDP kaputt ist (Install SSM Agent on Windows)
Die Maschine muss natürlich in SSM aufgeführt sein. Sollte das nicht der Fall sein einfach mal überprüfen ob die richtigen IAM Rollen auf den Maschinen angewendet werden. Für eine schnelle Fehlerbehebung hatte ich kurzfristig SSMFullAccess verwendet.
Jetzt startet man den AWS System Manager und führt dort das Dokument "AWS-RunPowerShellScript" gegen die kaputte Maschine aus.
Unter Run a command kann man im Feld Command parameters kann man ein Powershell Script rein werfen das gegen die Maschine läuft.
hier das skript
$AllCertificates = (Get-ChildItem -Path 'Cert:\LocalMachine\My' | Where-Object -FilterScript { $_.Subject -Match $env:Computername } | Select-Object Thumbprint, Subject, NotBefore, NotAfter, Issuer | Sort-Object -Property NotAfter -Descending) foreach ($Cert in $AllCertificates) { Write-Output $Cert }
Alle folgenden Skript werden nach dem selben Muster ausgeführt.
1.) Auslesen des Zertifikates
Get-WmiObject -Class "Win32_TSGeneralSetting" -Namespace root\cimv2\terminalservices -Filter "TerminalName='RDP-tcp'"unter SSLCertificateSHA1Hash steht der Thumbprint
2.) Setzen des Zertifikates
$RDPGeneralSettings = (Get-WmiObject -Class "Win32_TSGeneralSetting" -Namespace root\cimv2\terminalservices -Filter "TerminalName='RDP-tcp'") Set-WmiInstance -path $RDPGeneralSettings.__path -argument @{SSLCertificateSHA1Hash = "NEUER THUMBPRINT"}
3.) Restart des RDP Dienstes
Restart-Service -Name TermService -force
Kurz noch zur Erklärung , mit diesem Powershell hab ich mir die Events angeschaut die mich auf die richtige Fährte gebracht haben.
Get-EventLog -LogName System -After 6/9/2021 -Before 9/9/2021 -EntryType Error | Format-List