Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Přehled
Vzdálená relace PowerShellu běžně používá WinRM pro vyjednávání připojení a přenos dat. SSH je nyní k dispozici pro platformy Linux a Windows a umožňuje skutečnou multiplatformní vzdálenou správu PowerShellu.
WinRM poskytuje robustní model hostování pro vzdálené relace PowerShellu. Vzdálená komunikace založená na SSH v současné době nepodporuje konfiguraci vzdáleného koncového bodu a Just Enough Administration (JEA).
Vzdálený přístup pomocí SSH umožňuje provádět základní relace PowerShellu mezi počítači s Windows a Linuxem. Vzdálené připojení SSH vytvoří na cílovém počítači proces hostitele PowerShellu jako součást subsystému SSH. Nakonec implementujeme obecný model hostování, podobně jako WinRM, abychom podporovali konfiguraci koncových bodů a JEA.
Rutiny New-PSSession
, Enter-PSSession
a Invoke-Command
teď mají novou sadu parametrů pro podporu tohoto nového připojení vzdálené komunikace.
[-HostName <string>] [-UserName <string>] [-KeyFilePath <string>]
Pokud chcete vytvořit vzdálenou relaci, zadáte cílový počítač s parametrem HostName a poskytnete uživatelské jméno parametrem UserName. Při interaktivním spouštění rutin se zobrazí výzva k zadání hesla. Ověřování pomocí klíče SSH můžete použít také pomocí souboru privátního klíče s parametrem KeyFilePath . Vytváření klíčů pro ověřování SSH se liší podle platformy.
Obecné informace o nastavení
PowerShell 6 nebo vyšší a SSH musí být nainstalované na všech počítačích. Nainstalujte klienta SSH () i server (ssh.exe
sshd.exe
), abyste mohli vzdáleně přistupovat k počítačům a z počítačů. OpenSSH pro Windows je teď k dispozici ve Windows 10 buildu 1809 a Windows Serveru 2019. Další informace najdete v tématu Správa Windows pomocí OpenSSH. V případě Linuxu nainstalujte SSH, včetně serveru sshd, který je vhodný pro vaši platformu. Abyste mohli využít funkce SSH pro vzdálenou správu, musíte také nainstalovat PowerShell z GitHubu.
Server SSH musí být nakonfigurovaný tak, aby vytvořil subsystém SSH pro hostování procesu PowerShellu na vzdáleném počítači. A musíte povolit ověřování pomocí hesla nebo klíče .
Instalace služby SSH na počítač s Windows
Nainstalujte nejnovější verzi PowerShellu. Další informace najdete v tématu Instalace PowerShellu ve Windows.
Výpisem sad parametrů
New-PSSession
můžete ověřit, že PowerShell podporuje vzdálenou správu SSH. Všimněte si, že existují názvy sad parametrů, které začínají SSH. Tyto sady parametrů zahrnují parametry SSH .(Get-Command New-PSSession).ParameterSets.Name
Name ---- SSHHost SSHHostHashParam
Nainstalujte nejnovější OpenSSH win32. Pokyny k instalaci najdete v tématu Začínáme s OpenSSH.
Poznámka:
Pokud chcete nastavit PowerShell jako výchozí prostředí pro OpenSSH, přečtěte si téma Konfigurace Windows pro OpenSSH.
sshd_config
Upravte soubor umístěný na$Env:ProgramData\ssh
adrese .Ujistěte se, že je povolené ověřování heslem:
PasswordAuthentication yes
Vytvořte subsystém SSH, který hostuje proces PowerShellu na vzdáleném počítači:
Subsystem powershell C:/progra~1/powershell/7/pwsh.exe -sshs
Poznámka:
V OpenSSH pro Windows došlo k chybě, která vám brání v použití cesty s mezerami pro spustitelný soubor subsystému. Tento problém můžete vyřešit dvěma způsoby:
- Pro cestu ke spustitelnému souboru PowerShellu použijte krátký název ve stylu Windows 8.3.
- Vytvoření symbolického odkazu na spustitelný soubor PowerShellu, který vede k cestě bez mezer
Další informace najdete v tématu problém č. 784 v úložišti PowerShell/Win32-OpenSSH.
Název stylu 8.3 potřebujete získat pouze pro segment cesty, která obsahuje mezeru. Ve výchozím nastavení je v
C:\Program Files\PowerShell\7\
prostředí PowerShell 7 nainstalován . NázevProgram Files
stylu 8.3 by měl býtprogra~1
. Název můžete ověřit pomocí následujícího příkazu:Get-CimInstance Win32_Directory -Filter 'Name="C:\\Program Files"' | Select-Object EightDotThreeFileName
Název 8.3 je starší funkce systému souborů NTFS, která se dá zakázat. Tato funkce musí být povolená pro svazek, na kterém je nainstalovaný PowerShell.
Případně můžete vytvořit symbolický odkaz na spustitelný soubor PowerShellu, který vede k cestě bez mezer. Tato metoda je upřednostňovaná, protože umožňuje aktualizovat odkaz, pokud se cesta ke spustitelnému souboru PowerShellu někdy změní, aniž byste museli aktualizovat
sshd_config
soubor.Pomocí následujícího příkazu vytvořte symbolický odkaz na spustitelný soubor:
$newItemSplat = @{ ItemType = 'SymbolicLink' Path = 'C:\ProgramData\ssh\' Name = 'pwsh.exe' Value = (Get-Command pwsh.exe).Source } New-Item @newItemSplat
Tento příkaz vytvoří symbolický odkaz ve stejném adresáři, který používá server OpenSSH k uložení klíčů hostitele a další konfigurace.
Volitelně můžete povolit ověřování pomocí klíče:
PubkeyAuthentication yes
Další informace najdete v tématu Správa klíčů OpenSSH.
Restartujte službu sshd.
Restart-Service sshd
Přidejte cestu, do které je nainstalovaný OpenSSH, do proměnné prostředí PATH. Například:
C:\Program Files\OpenSSH\
. Tato položka umožňujessh.exe
nalezení položky.
Instalace služby SSH na počítač s Ubuntu Linuxem
Nainstalujte si nejnovější verzi PowerShellu, viz Instalace PowerShellu v Ubuntu.
Nainstalujte Ubuntu OpenSSH Server.
sudo apt install openssh-client sudo apt install openssh-server
Upravte soubor
sshd_config
v umístění/etc/ssh
.Ujistěte se, že je povolené ověřování heslem:
PasswordAuthentication yes
Volitelně můžete povolit ověřování pomocí klíče:
PubkeyAuthentication yes
Další informace o vytváření klíčů SSH na Ubuntu najdete v manpage pro ssh-keygen.
Přidejte položku subsystému PowerShellu:
Subsystem powershell /usr/bin/pwsh -sshs -NoLogo
Poznámka:
Výchozí umístění spustitelného souboru PowerShellu je
/usr/bin/pwsh
. Umístění se může lišit v závislosti na tom, jak jste nainstalovali PowerShell.
Restartujte službu SSH .
sudo systemctl restart sshd.service
Instalace služby SSH na počítač s macOS
Nainstalujte nejnovější verzi PowerShellu. Další informace najdete v instalaci PowerShellu v systému macOS.
Pomocí následujícího postupu se ujistěte, že je povolena vzdálená komunikace SSH:
- Otevřít
System Settings
. - Klikněte na
General
- Klikněte na
Sharing
. - Zkontrolujte
Remote Login
, abyste nastaviliRemote Login: On
. - Povolte přístup příslušným uživatelům.
- Otevřít
Upravte soubor
sshd_config
v umístění/private/etc/ssh/sshd_config
.Použijte textový editor, jako je nano:
sudo nano /private/etc/ssh/sshd_config
Ujistěte se, že je povolené ověřování heslem:
PasswordAuthentication yes
Přidejte položku subsystému PowerShellu:
Subsystem powershell /usr/local/bin/pwsh -sshs -NoLogo
Poznámka:
Výchozí umístění spustitelného souboru PowerShellu je
/usr/local/bin/pwsh
. Umístění se může lišit v závislosti na tom, jak jste nainstalovali PowerShell.Volitelně můžete povolit ověřování pomocí klíče:
PubkeyAuthentication yes
Restartujte službu sshd.
sudo launchctl stop com.openssh.sshd sudo launchctl start com.openssh.sshd
Poznámka:
Při upgradu operačního systému může být konfigurační soubor SSH přepsán. Po upgradu zkontrolujte konfigurační soubor.
Autentizace
Vzdálená komunikace PowerShellu přes SSH závisí na výměně ověřovacích informací mezi klientem SSH a službou SSH a sama neimplementuje žádné ověřovací mechanismy. Výsledkem je, že všechna nakonfigurovaná schémata ověřování, včetně vícefaktorového ověřování, zpracovává SSH a nezávislá na PowerShellu. Můžete například nakonfigurovat službu SSH tak, aby vyžadovala ověření veřejného klíče a jednorázové heslo pro přidání zabezpečení. Konfigurace vícefaktorového ověřování je mimo rozsah této dokumentace. Než se ho pokusíte použít pro vzdálený přístup pomocí PowerShellu, prostudujte si dokumentaci k SSH, jak správně nakonfigurovat vícefaktorové ověřování a ověřte, že funguje mimo PowerShell.
Poznámka:
Uživatelé si zachovávají stejná oprávnění ve vzdálených relacích. To znamená, že správci mají přístup k prostředí se zvýšenými oprávněními a normální uživatelé ne.
Příklad vzdálené správy PowerShellu
Nejjednodušší způsob, jak otestovat vzdálenou práci, je vyzkoušet ji na jednom počítači. V tomto příkladu vytvoříme vzdálenou relaci zpět do stejného počítače s Linuxem. Používáme rutiny PowerShellu interaktivně, takže se zobrazí výzvy od SSH s žádostí o ověření hostitelského počítače a zobrazení výzvy k zadání hesla. Totéž můžete udělat na počítači s Windows, abyste měli jistotu, že vzdálený přístup funguje. Poté se mezi počítači připojte vzdáleně a změňte název hostitele.
Linux na 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 do 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 na 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>
Omezení
Příkaz sudo nefunguje ve vzdálené relaci s počítačem s Linuxem.
PsRemoting přes SSH nepodporuje profily a nemá přístup k
$PROFILE
. Během relace můžete profil načíst tak, že použijete dot sourcing profilu pomocí úplné cesty k souboru. To nesouvisí s profily SSH. SSH server můžete nakonfigurovat tak, aby používal PowerShell jako výchozí prostředí a načítal profil pomocí SSH. Další informace najdete v dokumentaci SSH.Před PowerShellem 7.1 nepodporovala vzdálená komunikace přes SSH druhé přenosy ve vzdálených relacích. Tato schopnost byla omezená na relace používající WinRM. PowerShell 7.1 umožňuje
Enter-PSSession
aEnter-PSHostProcess
pracovat v rámci jakékoli interaktivní vzdálené relace.