Met PowerShell versie 6 introduceerde Microsoft PowerShell Remoting over SSH, waarmee echte multiplatform PowerShell remoting tussen Linux, macOS en Windows mogelijk is. PowerShell SSH Remoting creëert een PowerShell host proces op de doelmachine als een SSH subsysteem. Normaal gesproken gebruikt PowerShell remoting WinRM voor verbindingsonderhandeling en gegevenstransport, maar WinRM is alleen beschikbaar op Windows gebaseerde machines.
Er zitten ook een paar nadelen aan. SSH-gebaseerde remoting ondersteunt op dit moment niet de configuratie van eindpunten op afstand en JEA (Just Enough Administration). Het is ook belangrijk om te begrijpen, dat dit niet zomaar een PowerShell SSH client is.
Gebruik SSH Transport met PowerShell Remoting
Om PowerShell remoting met SSH te gebruiken, kunt u dezelfde cmdlets gebruiken, die u kent van PowerShell remoting met WinRM.
- New-PSSession
- Enter-PSSession
- Invoke-Command
Er zijn 3 nieuwe parameters voor deze cmdlets, als u PowerShell SSH remoting gebruikt.
- -HostName (In plaats van -Computername, definieert u het SSH-doel)
- -UserName (In plaats van -Credentials gebruikt u de parameter -UserName)
- -KeyFilePath (Als u SSH-sleutelauthenticatie gebruikt, kunt u met de -KeyFilePath parameter gebruiken om naar het sleutelbestand te verwijzen)
New-PSSession -HostName tomsssh.server.com -UserName thomas
Setup PowerShell SSH Remoting
Om met PowerShell SSH te werken, moet u de volgende stappen op alle systemen en machines uitvoeren.
- Installeer OpenSSH Server en Client
- OpenSSH voor Windows is direct beschikbaar in Windows 10 (1809) en Windows Server 2019 als een optionele functie.
- Op Linux installeert u OpenSSH, afhankelijk van uw platform
- Installeer PowerShell 6 op alle systemen
- Configureer het SSH-subsysteem om een PowerShell-proces op de externe machine te hosten
- Configureer wachtwoord- of sleutelgebaseerde authenticatie
Step by step setup SSH remoting on Windows
Step 1: Eerst moet u PowerShell 6 installeren op Windows. U kunt mijn blogbericht volgen om PowerShell 6 eenvoudig te installeren.
Step 2: Installeer OpenSSH Client en Open SSH Server. Om de client en server te installeren en de OpenSSH-server in eerste instantie te configureren, kunt u het volgende commando gebruiken.
# Install the OpenSSH Client and Server Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0 Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0 # Initial Configuration of SSH Server Start-Service sshd Set-Service -Name sshd -StartupType 'Automatic' # Confirm the Firewall rule is configured. It should be created automatically by setup. Get-NetFirewallRule -Name *ssh* # There should be a firewall rule named "OpenSSH-Server-In-TCP", which should be enabled
Stap 2.1: Omdat er momenteel een bug zit in OpenSSH voor Windows, accepteert het pad geen spaties. U moet een symlink maken naar een directory zonder spaties. Voer het volgende commando uit op het doelsysteem.
mklink /D c:\pwsh "C:\Program Files\PowerShell"
Step 3: Configureer en bewerk het sshd_config bestand dat zich bevindt in $env:ProgramData\ssh op de doelmachine.
Controleer of wachtwoordauthenticatie is ingeschakeld
PasswordAuthentication yes
Subsysteem voor PowerShell toevoegen
Subsystem powershell c:\pwsh\pwsh.exe -sshs -NoLogo -NoProfile
Optioneel sleutelauthenticatie inschakelen
PubkeyAuthentication yes
Als u geïnteresseerd bent in het instellen van sleutelauthenticatie met OpenSSH op Windows Server, bekijk dan de blogpost op ITOpstalk.com door Orin Thomas (Microsoft Cloud Advocate).
Stap 4: Herstart de sshd service
Restart-Service sshd
Step by step Setup SSH remoting on Linux (Ubuntu 18.04)
Stap 1: Eerst moet u PowerShell 6 installeren op Linux. U kunt mijn blogbericht volgen om PowerShell 6 eenvoudig te installeren.
Step 2: Installeer OpenSSH Client en Open SSH Server. Om client en server te installeren en de OpenSSH-server in eerste instantie te configureren, kunt u de volgende opdrachten gebruiken.
sudo apt install openssh-clientsudo apt install openssh-server
Stap 3: Configureer en bewerk het bestand sshd_config op de locatie /etc/ssh op de doelmachine.
Controleer of wachtwoord authenticatie is ingeschakeld
PasswordAuthentication yes
Subsysteem voor PowerShell toevoegen
Subsystem powershell /usr/bin/pwsh -sshs -NoLogo -NoProfile
Optioneel sleutel authenticatie inschakelen
PubkeyAuthentication yes
Step 4: Herstart de sshd service
sudo service sshd restart
SSH Remoting met PowerShell 6
Nu kunt u PowerShell SSH remoting gaan gebruiken om zelfs verbinding te maken vanaf verschillende besturingssystemen zoals Windows naar Linux of Linux naar Windows.
Zoals eerder vermeld, kunt u dezelfde commando’s gebruiken als u gewend bent, zoals New-PSSession, Enter-PSSession of Invoke-Command.
Als client kunt u ook de Azure Cloud Shell gebruiken, waarop PowerShell 6 wordt uitgevoerd
U kunt natuurlijk ook de PowerShell SSH remoting gebruiken om verbinding te maken van Linux naar Linux en van Windows naar Windows. U kunt meer informatie vinden over PowerShell SSH remoting op de Microsoft Docs pagina’s. Als je vragen hebt, laat het me dan weten in de comments.
Tags: Microsoft, PowerShell, PowerShell 6, PowerShell Core, PowerShell over SSH, Powershell Remoting, setup, Setup SSH PowerShell, SSH, SSH PowerShell, SSH Transport Laatst gewijzigd: April 4, 2019