Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Overzicht
PowerShell-remoting maakt normaal gesproken gebruik van WinRM voor het onderhandelen van verbindingen en het transport van gegevens. SSH is nu beschikbaar voor Linux- en Windows-plattformen en maakt echte multi-platform PowerShell afstandsbediening mogelijk.
WinRM biedt een robuust hostingmodel voor externe PowerShell-sessies. Externe communicatie op basis van SSH biedt momenteel geen ondersteuning voor externe eindpuntconfiguratie en Just Enough Administration (JEA).
Met SSH-sessiebeheer op afstand kunt u eenvoudige PowerShell-sessies op afstand beheren tussen Windows- en Linux-computers. Met SSH voor externe toegang wordt een PowerShell-hostproces op de doelcomputer gemaakt als een SSH-subsysteem. Uiteindelijk implementeren we een algemeen hostingmodel, vergelijkbaar met WinRM, ter ondersteuning van eindpuntconfiguratie en JEA.
De cmdlets New-PSSession, Enter-PSSessionen Invoke-Command hebben nu een nieuwe parameter ingesteld ter ondersteuning van deze nieuwe externe verbinding.
[-HostName <string>]  [-UserName <string>]  [-KeyFilePath <string>]
Als u een externe sessie wilt maken, geeft u de doelcomputer op met de parameter HostName en geeft u de gebruikersnaam op met Gebruikersnaam. Wanneer u de cmdlets interactief uitvoert, wordt u gevraagd om een wachtwoord. U kunt ook SSH-sleutelverificatie gebruiken met behulp van een bestand met een persoonlijke sleutel met de parameter KeyFilePath. Het maken van sleutels voor SSH-verificatie verschilt per platform.
Algemene informatie over de installatie
PowerShell 6 of hoger en SSH moet op alle computers zijn geïnstalleerd. Installeer zowel de SSH-client (ssh.exe) als de server (sshd.exe) zodat u op afstand van en naar de computers kunt. OpenSSH voor Windows is nu beschikbaar in Windows 10 build 1809 en Windows Server 2019. Zie Windows beheren met OpenSSHvoor meer informatie. Voor Linux installeert u SSH, inclusief sshd-server, die geschikt is voor uw platform. U moet ook PowerShell installeren vanuit GitHub om de SSH-remote-functie te verkrijgen.
De SSH-server moet zijn geconfigureerd om een SSH-subsysteem te maken voor het hosten van een PowerShell-proces op de externe computer. En u moet wachtwoord inschakelen of verificatie op basis van een sleutel.
De SSH-service installeren op een Windows-computer
- Installeer de nieuwste versie van PowerShell. Zie PowerShell installeren in Windowsvoor meer informatie. - U kunt bevestigen dat PowerShell SSH-remotingondersteuning heeft door de - New-PSSession-parametersets weer te geven. U ziet dat er namen van parametersets zijn die beginnen met SSH-. Deze parametersets bevatten SSH- parameters.- (Get-Command New-PSSession).ParameterSets.Name- Name ---- SSHHost SSHHostHashParam
- Installeer de nieuwste Win32 OpenSSH. Zie Aan de slag met OpenSSH-voor installatie-instructies. - Notitie - Als u PowerShell wilt instellen als de standaardshell voor OpenSSH, raadpleegt u Windows configureren voor OpenSSH-. 
- Bewerk het - sshd_configbestand in- $Env:ProgramData\ssh.- Zorg ervoor dat wachtwoordverificatie is ingeschakeld: - PasswordAuthentication yes
- Maak het SSH-subsysteem dat als host fungeert voor een PowerShell-proces op de externe computer: - Subsystem powershell C:/progra~1/powershell/7/pwsh.exe -sshs- Notitie - Er is een fout in OpenSSH voor Windows die voorkomt dat u een pad gebruikt met spaties voor het uitvoerbare subsysteem. Er zijn twee manieren om dit probleem te omzeilen: - Gebruik de korte naam van de Windows 8.3-stijl voor het uitvoerbare PowerShell-pad
- Een symbolische koppeling maken naar het uitvoerbare PowerShell-bestand dat resulteert in een pad zonder spaties
 - Zie het probleem #784 in de PowerShell-/Win32-OpenSSH-opslagplaats voor meer informatie. - U hoeft alleen de 8.3-stijlnaam op te halen voor het segment van het pad dat de ruimte bevat. PowerShell 7 is standaard geïnstalleerd in - C:\Program Files\PowerShell\7\. De naam van de 8.3-stijl moet- Program Fileszijn- progra~1. U kunt de volgende opdracht gebruiken om de naam te controleren:- Get-CimInstance Win32_Directory -Filter 'Name="C:\\Program Files"' | Select-Object EightDotThreeFileName- De naam 8.3 is een verouderde functie van het NTFS-bestandssysteem dat kan worden uitgeschakeld. Deze functie moet zijn ingeschakeld voor het volume waarop PowerShell is geïnstalleerd. - U kunt ook een symbolische koppeling maken naar het uitvoerbare PowerShell-bestand dat resulteert in een pad zonder spaties. Deze methode heeft de voorkeur omdat u hiermee de koppeling kunt bijwerken als het pad naar het uitvoerbare PowerShell-bestand ooit verandert, zonder dat u het - sshd_configbestand ook hoeft bij te werken.- Gebruik de volgende opdracht om een symbolische koppeling naar het uitvoerbare bestand te maken: - $newItemSplat = @{ ItemType = 'SymbolicLink' Path = 'C:\ProgramData\ssh\' Name = 'pwsh.exe' Value = (Get-Command pwsh.exe).Source } New-Item @newItemSplat- Met deze opdracht maakt u de symbolische koppeling in dezelfde map die door de OpenSSH-server wordt gebruikt om de hostsleutels en andere configuratie op te slaan. 
- Schakel desgewenst sleutelverificatie in: - PubkeyAuthentication yes- Zie OpenSSH-sleutels beherenvoor meer informatie. 
 
- Start de service sshd opnieuw. - Restart-Service sshd
- Voeg het pad toe waar OpenSSH is geïnstalleerd in de omgevingsvariabele PATH. Bijvoorbeeld: - C:\Program Files\OpenSSH\. Met deze vermelding kan de- ssh.exeworden gevonden.
De SSH-service installeren op een Ubuntu Linux-computer
- Installeer de nieuwste versie van PowerShell. Zie PowerShell installeren op Ubuntu. 
- Installeer Ubuntu OpenSSH Server. - sudo apt install openssh-client sudo apt install openssh-server
- Bewerk het - sshd_configbestand op locatie- /etc/ssh.- Zorg ervoor dat wachtwoordverificatie is ingeschakeld: - PasswordAuthentication yes
- Schakel desgewenst sleutelverificatie in: - PubkeyAuthentication yes- Zie de manpage voor ssh-keygenvoor meer informatie over het maken van SSH-sleutels op Ubuntu. 
- Voeg een Vermelding van een PowerShell-subsysteem toe: - Subsystem powershell /usr/bin/pwsh -sshs -NoLogo- Notitie - De standaardlocatie van het uitvoerbare PowerShell-bestand is - /usr/bin/pwsh. De locatie kan variëren, afhankelijk van hoe u PowerShell hebt geïnstalleerd.
 
- Start de ssh--service opnieuw. - sudo systemctl restart sshd.service
De SSH-service installeren op een macOS-computer
- Installeer de nieuwste versie van PowerShell. Voor meer informatie, PowerShell installeren op macOS. - Zorg ervoor dat externe SSH-communicatie is ingeschakeld door de volgende stappen uit te voeren: - 
              System Settingsopenen.
- Klik op General
- Klik op Sharing.
- Controleer Remote LoginomRemote Login: Onin te stellen.
- Toegang tot de juiste gebruikers toestaan.
 
- 
              
- Bewerk het - sshd_configbestand op locatie- /private/etc/ssh/sshd_config.- Gebruik een teksteditor zoals nano: - sudo nano /private/etc/ssh/sshd_config- Zorg ervoor dat wachtwoordverificatie is ingeschakeld: - PasswordAuthentication yes
- Voeg een Vermelding van een PowerShell-subsysteem toe: - Subsystem powershell /usr/local/bin/pwsh -sshs -NoLogo- Notitie - De standaardlocatie van het uitvoerbare PowerShell-bestand is - /usr/local/bin/pwsh. De locatie kan variëren, afhankelijk van hoe u PowerShell hebt geïnstalleerd.
- Schakel desgewenst sleutelverificatie in: - PubkeyAuthentication yes
 
- Start de service sshd opnieuw. - sudo launchctl stop com.openssh.sshd sudo launchctl start com.openssh.sshd
Notitie
Wanneer u uw besturingssysteem bijwerken, kan het SSH-configuratiebestand worden overschreven. Controleer het configuratiebestand na een upgrade.
Authenticatie
PowerShell-remoting via SSH is afhankelijk van de authenticatie-uitwisseling tussen de SSH-client en de SSH-service en implementeert zelf geen authenticatieschema's. Het resultaat is dat geconfigureerde verificatieschema's, waaronder meervoudige verificatie, worden verwerkt door SSH en onafhankelijk van PowerShell. U kunt bijvoorbeeld de SSH-service configureren om verificatie van openbare sleutels en een eenmalig wachtwoord te vereisen voor extra beveiliging. De configuratie van meervoudige verificatie valt buiten het bereik van deze documentatie. Raadpleeg de documentatie voor SSH over het correct configureren van meervoudige verificatie en het valideren dat deze werkt buiten PowerShell voordat u probeert deze te gebruiken met externe communicatie met PowerShell.
Notitie
Gebruikers behouden dezelfde bevoegdheden in externe sessies. Dit betekent dat beheerders toegang hebben tot een shell met verhoogde bevoegdheid en normale gebruikers niet.
Voorbeeld van PowerShell-remotegebruik
De eenvoudigste manier om remote access te testen, is door het uit te proberen op één computer. In dit voorbeeld maken we een externe sessie terug naar dezelfde Linux-computer. We gebruiken PowerShell-cmdlets interactief, waardoor we interactieve prompts van SSH zien die vragen om de hostcomputer te verifiëren en om een wachtwoord te geven. U kunt hetzelfde doen op een Windows-computer om ervoor te zorgen dat externe communicatie werkt. Vervolgens kunt u op afstand tussen computers de hostnaam wijzigen.
Linux naar Linux
$session = New-PSSession -HostName UbuntuVM1 -UserName TestUser
The authenticity of host 'UbuntuVM1 (9.129.17.107)' can't be established.
ECDSA key fingerprint is SHA256:2kCbnhT2dUE6WCGgVJ8Hyfu1z2wE4lifaJXLO7QJy0Y.
Are you sure you want to continue connecting (yes/no)?
TestUser@UbuntuVM1s password:
$session
 Id Name   ComputerName    ComputerType    State    ConfigurationName     Availability
 -- ----   ------------    ------------    -----    -----------------     ------------
  1 SSH1   UbuntuVM1       RemoteMachine   Opened   DefaultShell             Available
Enter-PSSession $session
[UbuntuVM1]: PS /home/TestUser> uname -a
Linux TestUser-UbuntuVM1 4.2.0-42-generic 49~16.04.1-Ubuntu SMP Wed Jun 29 20:22:11 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
[UbuntuVM1]: PS /home/TestUser> Exit-PSSession
Invoke-Command $session -ScriptBlock { Get-Process pwsh }
Handles  NPM(K)    PM(K)      WS(K)     CPU(s)     Id  SI ProcessName    PSComputerName
-------  ------    -----      -----     ------     --  -- -----------    --------------
      0       0        0         19       3.23  10635 635 pwsh           UbuntuVM1
      0       0        0         21       4.92  11033 017 pwsh           UbuntuVM1
      0       0        0         20       3.07  11076 076 pwsh           UbuntuVM1
Linux naar Windows
Enter-PSSession -HostName WinVM1 -UserName PTestName
PTestName@WinVM1s password:
[WinVM1]: PS C:\Users\PTestName\Documents> cmd /c ver
Microsoft Windows [Version 10.0.10586]
Windows naar Windows
C:\Users\PSUser\Documents>pwsh.exe
PowerShell
Copyright (c) Microsoft Corporation. All rights reserved.
$session = New-PSSession -HostName WinVM2 -UserName PSRemoteUser
The authenticity of host 'WinVM2 (10.13.37.3)' can't be established.
ECDSA key fingerprint is SHA256:kSU6slAROyQVMEynVIXAdxSiZpwDBigpAF/TXjjWjmw.
Are you sure you want to continue connecting (yes/no)?
Warning: Permanently added 'WinVM2,10.13.37.3' (ECDSA) to the list of known hosts.
PSRemoteUser@WinVM2's password:
$session
 Id Name            ComputerName    ComputerType    State         ConfigurationName     Availability
 -- ----            ------------    ------------    -----         -----------------     ------------
  1 SSH1            WinVM2          RemoteMachine   Opened        DefaultShell             Available
Enter-PSSession -Session $session
[WinVM2]: PS C:\Users\PSRemoteUser\Documents> $PSVersionTable
Name                           Value
----                           -----
PSEdition                      Core
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
SerializationVersion           1.1.0.1
BuildVersion                   3.0.0.0
CLRVersion
PSVersion                      6.0.0-alpha
WSManStackVersion              3.0
PSRemotingProtocolVersion      2.3
GitCommitId                    v6.0.0-alpha.17
[WinVM2]: PS C:\Users\PSRemoteUser\Documents>
Beperkingen
- De opdracht sudo werkt niet in een externe sessie naar een Linux-computer. 
- PSRemoting via SSH biedt geen ondersteuning voor profielen en heeft geen toegang tot - $PROFILE. Tijdens een sessie kunt u een profiel laden door middel van dot sourcing met het volledige bestandspad. Dit is niet gerelateerd aan SSH-profielen. U kunt de SSH-server configureren voor het gebruik van PowerShell als de standaardshell en het laden van een profiel via SSH. Zie de SSH-documentatie voor meer informatie.
- Voorafgaand aan PowerShell 7.1 biedt externe communicatie via SSH geen ondersteuning voor externe sessies van de tweede hop. Deze mogelijkheid was beperkt tot sessies met behulp van WinRM. Met PowerShell 7.1 kunnen - Enter-PSSessionen- Enter-PSHostProcesswerken vanuit een interactieve externe sessie.