Inhalt

PowerShell über SSH in Windows 10 Build 1803

Inhalt

Mit Windows 10 Build 1803 hat Microsoft Ihr Versprechen eingelöst und den OpenSSH Client im Standard aktiviert. Das verringert die Hürde für den geneigten Administrator OpenSSH für PowerShell Remoting zu nutzen.

Außerdem wurde das Wort Beta gestrichen, wodurch Microsoft nun offiziell Support für diese Version des OpenSSH Client und Servers bietet.

/powershell-ueber-ssh-windows-10-build-1803/images/OpenSSH_ClientInstalled.png

Wer zusätzlich noch den OpenSSH Server auf seiner Client Maschine betreiben möchte kann dies mit ein paar Zeilen Code erreichen. Alle Aktionen müssen mit erhöhten Berechtigungen ausgeführt werden (“Als Administrator ausführen”).

Das erste Script installiert und aktiviert den OpenSSH Server. Anschließend ist eine SSH Verbindung z.B. mit Putty auf den Client möglich. Jedoch wird als Standard Shell nicht die PowerShell genutzt 😢.

Enable-OpenSSHServer.ps1

# OpenSSH Server installieren
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0

# Dienst starten
Start-Service sshd
# Starttyp auf "Automatisch" stellen
Set-Service sshd -StartupType Automatic
Set-Service ssh-agent -StartupType Automatic

Enable-PowerShellCoreOpenSSH.ps1

# PowerShell Core als Default Shell nutzen
New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\Program Files\PowerShell\6-preview\pwsh.exe" -PropertyType String -Force

# PowerShell Core als Subsystem hinzufügen
notepad "C:\ProgramData\ssh\sshd_config"
# Folgende Zeile im Bereich Subsystem ohne führende Raute einfügen
#Subsystem	powershell	C:/Program Files/PowerShell/6-preview/pwsh.exe -sshs -NoLogo -NoProfile

# Dienst neustarten
Restart-Service sshd

Das zweite Script definiert die PowerShell Core als Default Shell 😍. Dazu muss natürlich die aktuelle PowerShell Core installiert sein.

Anschließend wir diese noch als Subsystem in der OpenSSH Server Konfiguration eingetragen.

/powershell-ueber-ssh-windows-10-build-1803/images/OpenSSH_sshd_config.png

Nach dem Neustart des Dienstes kann man sich anschließend direkt per PowerShell Remoting über SSH verbinden.

/powershell-ueber-ssh-windows-10-build-1803/images/OpenSSH_Connected.png