Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Översikt
PowerShell-fjärrkommunikation använder normalt WinRM för anslutningsförhandling och datatransport. SSH är nu tillgängligt för Linux- och Windows-plattformar och tillåter äkta PowerShell-fjärrkommunikation med flera plattformar.
WinRM tillhandahåller en robust värdmodell för PowerShell-fjärrsessioner. SSH-baserad fjärrkommunikation stöder för närvarande inte fjärrslutpunktskonfiguration och JEA (Just Enough Administration).
Med SSH-fjärrkommunikation kan du utföra grundläggande PowerShell-sessionskommunikation mellan Windows- och Linux-datorer. SSH-fjärrkommunikationen skapar en PowerShell-värdprocess på måldatorn som en del av SSH-undersystemet. Så småningom implementerar vi en allmän värdmodell som liknar WinRM för att stödja slutpunktskonfiguration och JEA.
Cmdletarna New-PSSession, Enter-PSSessionoch Invoke-Command har nu en ny parameter inställd för att stödja den nya fjärrkommunikationsanslutningen.
[-HostName <string>]  [-UserName <string>]  [-KeyFilePath <string>]
Om du vill skapa en fjärrsession anger du måldatorn med parametern HostName och anger användarnamnet med UserName. När du kör cmdletarna interaktivt uppmanas du att ange ett lösenord. Du kan också använda SSH-nyckelautentisering med hjälp av en privat nyckelfil med parametern KeyFilePath . Att skapa nycklar för SSH-autentisering varierar beroende på plattform.
Allmän konfigurationsinformation
PowerShell 6 eller senare och SSH måste vara installerat på alla datorer. Installera både SSH-klienten (ssh.exe) och servern (sshd.exe) så att du kan fjärransluta till och från datorerna. OpenSSH för Windows är nu tillgängligt i Windows 10 build 1809 och Windows Server 2019. Mer information finns i Hantera Windows med OpenSSH. För Linux installerar du SSH, inklusive sshd-servern, som passar din plattform. Du måste också installera PowerShell från GitHub för att skaffa SSH-fjärrfunktion.
SSH-servern måste konfigureras för att skapa ett SSH-undersystem som är värd för en PowerShell-process på fjärrdatorn. Och du måste aktivera lösenord eller nyckelbaserad autentisering.
Installera SSH-tjänsten på en Windows-dator
- Installera den senaste versionen av PowerShell. Mer information finns i Installera PowerShell i Windows. - Du kan bekräfta att PowerShell har stöd för SSH-fjärrkommunikation genom att lista parameteruppsättningarna - New-PSSession. Du kommer att märka att det finns parameteruppsättningsnamn som börjar med SSH. Dessa parameteruppsättningar innehåller SSH-parametrar .- (Get-Command New-PSSession).ParameterSets.Name- Name ---- SSHHost SSHHostHashParam
- Installera den senaste Win32 OpenSSH. Installationsinstruktioner finns i Komma igång med OpenSSH. - Anmärkning - Om du vill ange PowerShell som standardgränssnitt för OpenSSH läser du Konfigurera Windows för OpenSSH. 
- Redigera filen - sshd_configsom finns på platsen- $Env:ProgramData\ssh.- Kontrollera att lösenordsautentisering är aktiverat: - PasswordAuthentication yes
- Skapa SSH-undersystemet som är värd för en PowerShell-process på fjärrdatorn: - Subsystem powershell C:/progra~1/powershell/7/pwsh.exe -sshs- Anmärkning - Det finns en bugg i OpenSSH för Windows som hindrar dig från att använda en sökväg med blanksteg för det körbara undersystemet. Det finns två sätt att kringgå det här problemet: - Använd kortnamnet i Windows 8.3-format för den körbara PowerShell-sökvägen
- Skapa en symbolisk länk till den körbara PowerShell-filen som resulterar i en sökväg utan blanksteg
 - Mer information finns i problem #784 i PowerShell/Win32-OpenSSH-lagringsplatsen. - Du behöver bara hämta namnet på 8,3-format för segmentet för sökvägen som innehåller utrymmet. Som standard är PowerShell 7 installerat i - C:\Program Files\PowerShell\7\. Namnet på 8,3-format för- Program Filesska vara- progra~1. Du kan använda följande kommando för att verifiera namnet:- Get-CimInstance Win32_Directory -Filter 'Name="C:\\Program Files"' | Select-Object EightDotThreeFileName- 8.3-namnet är en äldre funktion i NTFS-filsystemet som kan inaktiveras. Den här funktionen måste vara aktiverad för volymen som PowerShell är installerat på. - Du kan också skapa en symbolisk länk till den körbara PowerShell-filen som resulterar i en sökväg utan blanksteg. Den här metoden rekommenderas eftersom du kan uppdatera länken om sökvägen till den körbara PowerShell-filen någonsin ändras, utan att du behöver uppdatera - sshd_configfilen.- Använd följande kommando för att skapa en symbolisk länk till den körbara filen: - $newItemSplat = @{ ItemType = 'SymbolicLink' Path = 'C:\ProgramData\ssh\' Name = 'pwsh.exe' Value = (Get-Command pwsh.exe).Source } New-Item @newItemSplat- Det här kommandot skapar den symboliska länken i samma katalog som används av OpenSSH-servern för att lagra värdnycklarna och annan konfiguration. 
- Du kan också aktivera nyckelautentisering: - PubkeyAuthentication yes- Mer information finns i Hantera OpenSSH-nycklar. 
 
- Starta om sshd-tjänsten. - Restart-Service sshd
- Lägg till sökvägen där OpenSSH är installerat i path-miljövariabeln. Till exempel - C:\Program Files\OpenSSH\. Den här posten tillåter att- ssh.exehittas.
Installera SSH-tjänsten på en Ubuntu Linux-dator
- Installera den senaste versionen av PowerShell, se Installera PowerShell på Ubuntu. 
- Installera Ubuntu OpenSSH Server. - sudo apt install openssh-client sudo apt install openssh-server
- Redigera - sshd_configfilen på platsen- /etc/ssh.- Kontrollera att lösenordsautentisering är aktiverat: - PasswordAuthentication yes
- Du kan också aktivera nyckelautentisering: - PubkeyAuthentication yes- Mer information om hur du skapar SSH-nycklar på Ubuntu finns i manpage för ssh-keygen. 
- Lägg till en post i PowerShell-undersystemet: - Subsystem powershell /usr/bin/pwsh -sshs -NoLogo- Anmärkning - Standardplatsen för den körbara PowerShell-filen är - /usr/bin/pwsh. Platsen kan variera beroende på hur du installerade PowerShell.
 
- Starta om ssh-tjänsten . - sudo systemctl restart sshd.service
Installera SSH-tjänsten på en macOS-dator
- Installera den senaste versionen av PowerShell. Mer information finns i Installera PowerShell på macOS. - Kontrollera att SSH-fjärrkommunikation är aktiverat genom att följa dessa steg: - Öppna System Settings.
- Klicka på General
- Klicka på Sharing.
- Kontrollera Remote Loginom du vill angeRemote Login: On.
- Tillåt åtkomst till lämpliga användare.
 
- Öppna 
- Redigera - sshd_configfilen på platsen- /private/etc/ssh/sshd_config.- Använd en textredigerare som nano: - sudo nano /private/etc/ssh/sshd_config- Kontrollera att lösenordsautentisering är aktiverat: - PasswordAuthentication yes
- Lägg till en post i PowerShell-undersystemet: - Subsystem powershell /usr/local/bin/pwsh -sshs -NoLogo- Anmärkning - Standardplatsen för den körbara PowerShell-filen är - /usr/local/bin/pwsh. Platsen kan variera beroende på hur du installerade PowerShell.
- Du kan också aktivera nyckelautentisering: - PubkeyAuthentication yes
 
- Starta om sshd-tjänsten. - sudo launchctl stop com.openssh.sshd sudo launchctl start com.openssh.sshd
Anmärkning
När du uppgraderar operativsystemet kan SSH-konfigurationsfilen skrivas över. Kontrollera konfigurationsfilen efter en uppgradering.
Autentisering
PowerShell-fjärrkommunikation via SSH förlitar sig på autentiseringsutbytet mellan SSH-klienten och SSH-tjänsten och implementerar inte några autentiseringsscheman. Resultatet är att alla konfigurerade autentiseringsscheman, inklusive multifaktorautentisering, hanteras av SSH och oberoende av PowerShell. Du kan till exempel konfigurera SSH-tjänsten så att den kräver autentisering med offentlig nyckel och ett engångslösenord för ökad säkerhet. Konfigurationen av multifaktorautentisering ligger utanför omfånget för den här dokumentationen. Se dokumentationen för SSH om hur du konfigurerar multifaktorautentisering korrekt och verifierar att den fungerar utanför PowerShell innan du försöker använda den med PowerShell-fjärrkommunikation.
Anmärkning
Användare behåller samma behörigheter i fjärrsessioner. Det innebär att administratörer har åtkomst till ett förhöjt gränssnitt och normala användare har inte det.
PowerShell-fjärrkommunikationsexempel
Det enklaste sättet att testa fjärrstyrning är att prova det på en enda dator. I det här exemplet skapar vi en fjärrsession tillbaka till samma Linux-dator. Vi använder PowerShell-cmdletar interaktivt så vi ser uppmaningar från SSH som ber om att verifiera värddatorn och fråga efter ett lösenord. Du kan göra samma sak på en Windows-dator för att säkerställa att fjärrkommunikation fungerar. Anslut fjärrdatorer genom att ändra värdnamnet.
Linux till 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 till 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 till 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>
Begränsningar
- Sudo-kommandot fungerar inte i en fjärrsession till en Linux-dator. 
- PSRemoting över SSH stöder inte Profiler och har inte åtkomst till - $PROFILE. En gång i en session kan du läsa in en profil genom att punktinläsa profilen med den fullständiga filsökvägen. Detta är inte relaterat till SSH-profiler. Du kan konfigurera SSH-servern att använda PowerShell som standardgränssnitt och läsa in en profil via SSH. Mer information finns i SSH-dokumentationen.
- Före PowerShell 7.1 hade fjärrkommunikation via SSH inte stöd för fjärrsessioner med andra hopp. Den här funktionen var begränsad till sessioner med WinRM. Med PowerShell 7.1 kan - Enter-PSSessionoch- Enter-PSHostProcessfungera inifrån alla interaktiva fjärrsessioner.