Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Áttekintés
A PowerShell-remoting általában a WinRM-et használja a kapcsolat egyeztetéséhez és az adatátvitelhez. Az SSH már elérhető Linux- és Windows-platformokon, és lehetővé teszi a valódi többplatformos PowerShell-távoli elérést.
A WinRM robusztus üzemeltetési modellt biztosít a Távoli PowerShell-munkamenetekhez. Az SSH-alapú remoting jelenleg nem támogatja a távoli végpontkonfigurációt és a Just Enough Administrationt (JEA).
Az SSH távoli elérés lehetővé teszi az alapszintű PowerShell távoli munkamenet-kezelést a Windows és a Linux rendszerű számítógépek között. Az SSH-remoting egy PowerShell-gazdafolyamatot hoz létre a célszámítógépen SSH-alrendszerként. Végül implementálunk egy, a WinRM-hez hasonló általános üzemeltetési modellt a végpontkonfiguráció és a JEA támogatásához.
A New-PSSession, Enter-PSSessionés Invoke-Command parancsmagok mostantól új paraméterkészlettel rendelkeznek az új távoli kapcsolat támogatásához.
[-HostName <string>] [-UserName <string>] [-KeyFilePath <string>]
Távoli munkamenet létrehozásához meg kell adnia a célszámítógépet a HostName paraméterrel, és meg kell adnia a felhasználónevet UserName. A parancsmagok interaktív futtatásakor a rendszer jelszót kér. Az SSH-kulcshitelesítést egy titkos kulcsfájllal is használhatja a KeyFilePath paraméterrel. Az SSH-hitelesítés kulcsainak létrehozása platformonként eltérő.
Általános beállítási információk
A PowerShell 6-os vagy újabb verzióját, az SSH-t pedig minden számítógépre telepíteni kell. Telepítse az SSH ügyfelet (ssh.exe) és a szervert (sshd.exe), hogy a számítógépekhez távolról is hozzáférhessen. A Windows OpenSSH mostantól elérhető a Windows 10 1809-ben és a Windows Server 2019-ben. További információkért lásd: Windows kezelése OpenSSH-val. Linux esetén telepítse az SSH-t, beleértve az sshd-kiszolgálót is, amely megfelel a platformnak. Az SSH távoli kapcsolat funkció eléréséhez telepítenie kell a PowerShellt a GitHubról.
Az SSH-kiszolgálót úgy kell konfigurálni, hogy hozzon létre egy SSH-alrendszert a PowerShell-folyamat távoli számítógépen való üzemeltetéséhez. Emellett engedélyeznie kell jelszó- vagy kulcsalapú-hitelesítést.
Az SSH szolgáltatás telepítése Windows rendszerű számítógépre
Telepítse a PowerShell legújabb verzióját. További információ: A PowerShell telepítése Windowsrendszeren.
A
New-PSSessionparaméterkészletek listázásával ellenőrizheti, hogy a PowerShell rendelkezik-e SSH távoli elérés támogatással. Megfigyelheti, hogy vannak olyan paraméterkészlet-nevek, amelyek SSH-kezdődnek. Ezek a paraméterkészletek SSH- paramétereket tartalmaznak.(Get-Command New-PSSession).ParameterSets.NameName ---- SSHHost SSHHostHashParamTelepítse a legújabb Win32 OpenSSH-t. A telepítési utasításokért lásd Az OpenSSHhasználatának első lépéseit.
Szerkessze a
sshd_configfájlt$Env:ProgramData\sshhelyen.Győződjön meg arról, hogy a jelszóhitelesítés engedélyezve van:
PasswordAuthentication yesHozza létre azt az SSH-alrendszert, amely PowerShell-folyamatot futtat a távoli számítógépen:
Subsystem powershell C:/progra~1/powershell/7/pwsh.exe -sshsMegjegyzés
A Windows OpenSSH-ban hiba történt, amely megakadályozza, hogy szóközökkel rendelkező elérési utat használjon az alrendszer végrehajtható fájljaihoz. A probléma megkerülésére kétféleképpen lehet megoldást kínálni:
- A Windows 8.3-as stílusú rövid név használata a PowerShell végrehajtható elérési útjának használatához
- Szimbolikus hivatkozás létrehozása a végrehajtható PowerShell-hez, amely szóközök nélküli elérési utat eredményez
További információt a PowerShell/Win32-OpenSSH adattár 784 .
Csak a szóközt tartalmazó elérési út szegmensének 8,3 stílusú nevét kell megkapnia. Alapértelmezés szerint a PowerShell 7 telepítve van a
C:\Program Files\PowerShell\7\. A 8,3 stílusú névnekProgram Fileskell lennieprogra~1. A név ellenőrzéséhez használja a következő parancsot:Get-CimInstance Win32_Directory -Filter 'Name="C:\\Program Files"' | Select-Object EightDotThreeFileNameA 8.3 név az NTFS fájlrendszer örökölt funkciója, amely letiltható. Ezt a funkciót engedélyezni kell ahhoz a kötethez, amelyre a PowerShell telepítve van.
Másik lehetőségként létrehozhat egy szimbolikus hivatkozást a Végrehajtható PowerShellre, amely szóközök nélküli elérési utat eredményez. Ez a módszer azért ajánlott, mert lehetővé teszi a hivatkozás frissítését, ha a PowerShell végrehajtható elérési útja bármikor megváltozik, anélkül, hogy frissítenie kellene a
sshd_configfájlt.A következő paranccsal hozzon létre egy szimbolikus hivatkozást a végrehajtható fájlra:
$newItemSplat = @{ ItemType = 'SymbolicLink' Path = 'C:\ProgramData\ssh\' Name = 'pwsh.exe' Value = (Get-Command pwsh.exe).Source } New-Item @newItemSplatEz a parancs létrehozza a szimbolikus hivatkozást ugyanabban a könyvtárban, amelyet az OpenSSH-kiszolgáló használ a gazdagépkulcsok és egyéb konfiguráció tárolására.
Opcionálisan engedélyezze a kulcshitelesítést:
PubkeyAuthentication yesTovábbi információ: OpenSSH-kulcsok kezelése.
Indítsa újra az sshd szolgáltatást.
Restart-Service sshdAdja hozzá azt az elérési utat, amelyen az OpenSSH telepítve van a PATH környezeti változóhoz. Például:
C:\Program Files\OpenSSH\. Ez a bejegyzés lehetővé teszi assh.exekeresését.
Az SSH szolgáltatás telepítése Ubuntu Linux rendszerű számítógépre
Telepítse a PowerShell legújabb verzióját, és lásd a PowerShell telepítése Ubuntu rendszerrerészt.
Telepítse Ubuntu OpenSSH-kiszolgáló.
sudo apt install openssh-client sudo apt install openssh-serverSzerkessze a
sshd_configfájlt a/etc/sshhelyen.Győződjön meg arról, hogy a jelszóhitelesítés engedélyezve van:
PasswordAuthentication yesOpcionálisan engedélyezze a kulcshitelesítést:
PubkeyAuthentication yesTovábbi információ az SSH-kulcsok Ubuntu-on való létrehozásáról: ssh-keygen.
PowerShell-alrendszerbejegyzés hozzáadása:
Subsystem powershell /usr/bin/pwsh -sshs -NoLogoMegjegyzés
A PowerShell végrehajtható alapértelmezett helye
/usr/bin/pwsh. A hely a PowerShell telepítésétől függően változhat.
Indítsa újra a ssh szolgáltatást.
sudo systemctl restart sshd.service
Az SSH szolgáltatás telepítése macOS-számítógépre
Telepítse a PowerShell legújabb verzióját. További információ: A PowerShell telepítése macOS-hoz.
Az alábbi lépések végrehajtásával győződjön meg arról, hogy az SSH Távoli elérés engedélyezve legyen:
- Nyissa meg
System Settings. - Kattintson a
General - Kattintson a
Sharing. - A
Remote Loginbeállításához ellenőrizze aRemote Login: On. - Hozzáférés engedélyezése a megfelelő felhasználókhoz.
- Nyissa meg
Szerkessze a
sshd_configfájlt a/private/etc/ssh/sshd_confighelyen.Használjon szövegszerkesztőt, például nano:
sudo nano /private/etc/ssh/sshd_configGyőződjön meg arról, hogy a jelszóhitelesítés engedélyezve van:
PasswordAuthentication yesPowerShell-alrendszerbejegyzés hozzáadása:
Subsystem powershell /usr/local/bin/pwsh -sshs -NoLogoMegjegyzés
A PowerShell végrehajtható alapértelmezett helye
/usr/local/bin/pwsh. A hely a PowerShell telepítésétől függően változhat.Opcionálisan engedélyezze a kulcshitelesítést:
PubkeyAuthentication yes
Indítsa újra az sshd szolgáltatást.
sudo launchctl stop com.openssh.sshd sudo launchctl start com.openssh.sshd
Megjegyzés
Az operációs rendszer frissítésekor előfordulhat, hogy az SSH-konfigurációs fájl felülíródik. Ellenőrizze a konfigurációs fájlt a frissítés után.
Hitelesítés
Az SSH-n keresztüli PowerShell-remotálás az SSH-ügyfél és az SSH-szolgáltatás közötti hitelesítési cserére támaszkodik, és nem implementálja magát a hitelesítési sémákat. Az eredmény az, hogy minden konfigurált hitelesítési sémát, beleértve a többtényezős hitelesítést, az SSH kezeli, és független a PowerShell-lel. Konfigurálhatja például az SSH szolgáltatást úgy, hogy nyilvános kulcsú hitelesítést és egyszeri jelszót igényeljen a további biztonság érdekében. A többtényezős hitelesítés konfigurálása nem tartozik a dokumentáció hatókörébe. Tekintse meg az SSH dokumentációját, amely bemutatja, hogyan konfigurálhatja helyesen a többtényezős hitelesítést, és hogyan ellenőrizheti, hogy a PowerShell-en kívül is működik-e, mielőtt megpróbálkozza használni a PowerShell-újraformálással.
Megjegyzés
A felhasználók ugyanazokat a jogosultságokat őrzik meg a távoli munkamenetekben. Ez azt jelenti, hogy a rendszergazdák hozzáféréssel rendelkeznek egy emelt szintű felülethez, és a normál felhasználók nem.
Példa PowerShell-távoli elérésre
A távoli kapcsolat tesztelésének legegyszerűbb módja, ha egyetlen számítógépen próbáljuk ki. Ebben a példában egy távoli munkamenetet hozunk létre ugyanarra a Linux-számítógépre. Interaktívan használjuk a PowerShell-parancsmagokat, így az SSH kéri, hogy ellenőrizze a gazdaszámítógépet, és jelszót kérjen. Ugyanezt megteheti egy Windows rendszerű számítógépen is annak érdekében, hogy a távoli elérés működjön. Ezután a gazdagép nevének módosításával lehetővé válik a számítógépek közötti távoli kapcsolódás.
Linuxról Linuxra
$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
Linuxról Windowsra
Enter-PSSession -HostName WinVM1 -UserName PTestName
PTestName@WinVM1s password:
[WinVM1]: PS C:\Users\PTestName\Documents> cmd /c ver
Microsoft Windows [Version 10.0.10586]
Windowsról Windowsra
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>
Korlátozások
A sudo parancs nem működik távoli munkamenetben Linux rendszerű számítógépeken.
Az SSH-n keresztüli PSRemoting nem támogatja a Profilokat, és nem fér hozzá a
$PROFILE-hoz. A munkamenet során egyszer betöltheti a profilt a teljes fájlútvonal megadásával és pontosítással. Ez nem SSH-profilokhoz kapcsolódik. Konfigurálhatja az SSH-kiszolgálót úgy, hogy a PowerShellt használja alapértelmezett rendszerhéjként, és betöltse a profilt az SSH-val. További információt az SSH dokumentációjában talál.A PowerShell 7.1-et megelőzően az SSH protokollal való távoli elérés nem támogatta a többugrásos távoli munkameneteket. Ez a képesség a WinRM-t használó munkamenetekre korlátozódott. A PowerShell 7.1 lehetővé teszi, hogy
Enter-PSSessionésEnter-PSHostProcessbármilyen interaktív távoli munkameneten belül működjön.