AWS Germany – Amazon Web Services in Deutschland

Aktivieren von PowerShell Remoting für AWS Windows-Instanzen

Normalerweise sind Windows-Instanzen auf AWS nur über RDP für einen interaktiven Login zugänglich. Manchmal wünscht man sich aber auch das Äquivalent zu SSH unter Linux, d.h. einen reinen Kommandozeilen-Zugang.

Die Lösung heißt Powershell Remoting. Seit Powershell 2.0 kann man damit auf ein entferntes Windows-System mit Powershell zugreifen und auf diesem System Powershell- und Kommandozeilen-Kommandos ausführen. Das Problem ist: Standardmäßig ist Powershell Remoting aus.

Um es beim Start einer Windows-Instanz (getestet mit dem Standard-AMI für Windows Server 2012) auf AWS zu aktivieren reicht es, das folgende Skript in das User Data Feld zu schreiben:


Enable-PSRemoting -SkipNetworkProfileCheck -Force
Set-NetFirewallRule -DisplayName "Windows Remote Management (HTTP-In)" -RemoteAddress Any   

Das erste Kommando aktiviert Powershell Remoting ohne Nachfrage für alle Netzwerk-Profile

Das zweite Kommando ändert die Windows Firewall-Regel für Windows Remote Management indem Zugriff von allen IP-Adressen (statt standardmäßig nur aus dem lokalen Netz) aktiviert wird.

Als nächstes muss in der Security Group der EC2-Instanz der Port 5985 geöffnet werden, der von WinRM verwendet wird.

Danach kann man sich von einem anderen Windows-System mit dem folgenden Kommando verbinden:


Enter-PSSession -computername ec2-xx-xxx-xxx-xxx.eu-west-1.compute.amazonaws.com -credential Administrator

Als Computername ist dabei der Zielhost einzutragen. Das Kommando öffnet ein Prompt nach dem Passwort, hier ist dasselbe wie für RDP einzugeben. Man kann sich alternativ auch vorher aus Benutzername und Kennwort  ein Powershell Credential Objekt zusammenbauen.

Grundsätzlich unterstützt Powershell Remoting auch zertifikatsbasierte Authentifizierung. Ich bin aber noch nicht dazu gekommen, das auszuprobieren…

Gruß,
Steffen