Naučte se nastavit a používat PowerShell SSH remoting
Posted on
Když řekl, že Microsoft PowerShell by se stal open source projekt, který běží na Windows, Linux a macOS v srpnu 2016, tam byl zajímavý vráskám související s PowerShell remoting.
Microsoft řekl, že toto jádro PowerShell bude podporovat remoting přes Secure Shell (SSH), stejně jako Web Services-Management (WS-MAN). Vždy můžete použít binární soubory SSH PowerShell, ale oznámení naznačilo, že podpora SSH bude nedílnou součástí PowerShell. Tím se otevřela možnost provádět vzdálenou správu systémů Windows a Linux snadno pomocí stejných technologií.
společnost Microsoft představila remoting ve verzi PowerShell 2.0 ve Windows 7 a Windows Server 2008 R2, což dramaticky změnilo krajinu pro správce systému Windows. Mohli vytvářet relace vzdálené plochy na servery, ale vzdálené ovládání PowerShell umožnilo spravovat velké množství serverů současně.
Remoting v prostředí Windows PowerShell je založen na ws-MAN, otevřeném standardu z distribuované pracovní skupiny pro správu. Ale protože remoting založený na WS-MAN je orientován na Windows, bylo nutné použít jinou technologii, obvykle SSH, pro správu systémů Linux.
Zavedení SSH na PowerShell Core
Jsme si zvykli na instalaci softwaru v systému Windows pomocí průvodců, ale instalace OpenSSH vyžaduje další informace o pozadí a další práce od správce.
SSH je protokol pro správu systémů přes možná nezabezpečenou síť. SSH pracuje v režimu klient-server a je de facto standardem pro vzdálenou správu v prostředích Linuxu.
PowerShell Core používá OpenSSH, vidličku z SSH 1.2.12, která byla vydána pod licencí open source. OpenSSH je pravděpodobně nejoblíbenější implementace SSH.
kód potřebný k použití ws-MAN remoting je nainstalován jako součást operačního systému Windows. Musíte nainstalovat OpenSSH ručně.
instalace OpenSSH
zvykli jsme si instalovat software na Windows pomocí průvodců, ale instalace OpenSSH vyžaduje více informací o pozadí a více práce od správce. Bez nějakého ručního zásahu může vzniknout mnoho problémů.
proces instalace OpenSSH v systému Windows se postupem času zlepšil, ale stále to není tak snadné, jak by mělo být. Práce s konfiguračním souborem je velmi žádoucí.
při instalaci PowerShell SSH existují dvě možnosti:
v systémech Windows 10 1809, Windows Server 1809, Windows Server 2019 a novějších je OpenSSH k dispozici jako volitelná funkce.
v dřívějších verzích systému Windows si můžete stáhnout a nainstalovat OpenSSH z GitHubu.
ujistěte se, že váš systém má nejnovější opravy před instalací OpenSSH.
instalace volitelné funkce OpenSSH
volitelnou funkci OpenSSH můžete nainstalovat pomocí PowerShell. Nejprve zkontrolujte systém pomocí následujícího příkazu:
Get-WindowsCapability -Online | where Name -like '*SSH*'
Obrázek 1. Najděte komponenty OpenSSH ve vašem systému.
Obrázek 1 ukazuje, že klientský software OpenSSH je předinstalován.
Budete muset použít Windows PowerShell pro instalaci, pokud si stáhnete WindowsCompatibility PowerShell modul pro Jádro. Poté můžete importovat Modul Servis a správa obrazu nasazení z prostředí Windows PowerShell a spustit příkazy v jádru PowerShell.
Pokud jste nainstalovali OpenSSH s volitelnou funkcí, vytvoří systém Windows nové pravidlo brány firewall, které umožní příchozí přístup SSH přes port 22. Pokud máte nainstalován OpenSSH z ke stažení, pak vytvořit pravidlo brány firewall pomocí tohoto příkazu:
SSH klíče a konfigurační soubor jsou umístěny v C:\ProgramData\ssh, která je skrytá složka. Výchozí shell používaný SSH je příkazový shell systému Windows. To se musí změnit na PowerShell:
Nyní, když jste se připojit k systému přes SSH, PowerShell Core začne a bude výchozí shell. V případě potřeby můžete také vytvořit výchozí prostředí Windows PowerShell.
v systému Windows je chyba v OpenSSH. Nefunguje s cestami s mezerou,jako je cesta k spustitelnému souboru jádra PowerShell! Řešením je vytvořit symbolický odkaz, který vytvoří cestu, která OpenSSH lze použít:
zobrazí se výzva k zadání hesla, které se při psaní nezobrazí.
Pokud jste se poprvé připojili ke vzdálenému systému přes SSH, zobrazí se podobná zpráva:
The authenticity of host 'servername (10.00.00.001)' can't be established. ECDSA key fingerprint is SHA256:(<a large string>). Are you sure you want to continue connecting (yes/no)?
můžete zadat OpenSSH vzdálené relace pomocí Enter-PSSession stejným způsobem jako WS-MAN zasedání. Můžete zadat existující relaci nebo použít parametr HostName na Enter-PSSession k vytvoření interaktivní relace.
nemůžete odpojit relaci založenou na SSH; to je technika WS-MAN.
můžete použít relace WS-MAN a SSH pro správu více počítačů, jak je znázorněno na obrázku 2.
informace o relaci ukazuje různé dopravní mechanismus — WS-MAN a SSH, respektive-a koncový bod v provozu o každém zasedání.
Obrázek 2. Pro správu vzdálených počítačů použijte relace WS-MAN a SSH společně.
Pokud se podíváte pozorně na Obrázek 2, všimněte si, tam byl žádný prompt pro heslo na SSH relaci, protože systém byl nastaven s SSH klíče ověřování.
pomocí ověřování pomocí SSH klíčů
otevřete zvýšenou relaci PowerShell. Změňte umístění na .ssh složku v uživatelské oblasti:
Set-Location -Path ~\.ssh
Vygenerovat dvojici klíčů:
ssh-keygen -t ed25519
Přidat soubor klíče do SSH-agenta na lokálním počítači:
ssh-add id_ed25519
jakmile přidáte soukromý klíč do SSh-agenta, zálohujte soukromý klíč na bezpečné místo a odstraňte klíč z místního počítače.
zkopírujte id_ed25519.soubor pub do .složka ssh pro odpovídající uživatelský účet na vzdáleném serveru. Můžete vytvořit takový účet, pokud je to nutné:
$pwd = Read-Host -Prompt 'Password' -AsSecureString Password: ******** New-LocalUser -Name Richard -Password $pwd -PasswordNeverExpires Add-LocalGroupMember -Group Administrators -Member Richard
Na vzdáleném počítači, zkopírujte obsah souboru klíče do souboru authorized_keys:
scp id_ed25519.pub authorized_keys
authorized_keys soubor potřebuje jeho oprávnění změnit:
Otevřete Průzkumník souborů, klikněte pravým tlačítkem na authorized_keys a přejděte na Vlastnosti-zabezpečení-pokročilé
klikněte na Zakázat dědičnost.
vyberte Převést zděděná oprávnění na explicitní oprávnění k tomuto objektu.
odeberte všechna oprávnění kromě systému a uživatelského účtu. Oba by měli mít plnou kontrolu.
Úvod do SSH s jádrem PowerShell.
uvidíte odkazy na použití OpenSSHUtils modul nastavit oprávnění, ale tam je chyba ve verzi od PowerShell Galerie, která dělá authorized_keys soubor nepoužitelný.
restartujte službu sshd na vzdáleném počítači.
nyní se můžete připojit ke vzdálenému počítači bez použití hesla, jak je znázorněno na obrázku 2.
Pokud se připojujete k počítači, který není doménou, ze stroje v doméně, musíte použít parametr uživatelské jméno po povolení ověřování párů klíčů:
$ss = New-PSSession -HostName W19ND01 -UserName Richard
uživatelské jméno na vzdáleném počítači potřebujete, aby odpovídalo vašemu uživatelskému jménu domény. Nebudete vyzváni k zadání hesla.
ws-MAN nebo SSH remoting?
měli byste použít remoting založený na WS-MAN nebo SSH? Ws-MAN remoting je k dispozici na všech systémech Windows a je ve výchozím nastavení povolen na Windows Server 2012 a novějších verzích serveru. Ws-MAN remoting má některé problémy, zejména problém double hop. WS-MAN také potřebuje práci navíc pro vzdálené systémy bez domény.
SSH remoting je k dispozici pouze v PowerShell Core; Windows PowerShell je omezen na ws-MAN remoting. Instalace a konfigurace SSH remoting vyžaduje značné množství práce. Dokumentace není tak dobrá, jak by měla být. Výhodou SSH remoting je, že můžete snadno přistupovat k počítačům bez domény a systémům bez systému Windows, kde je SSH standardem pro vzdálený přístup.