Poslední dobou jsem mlčel všude možně. Připojuji SSH do Linuxu z Windows pomocí vestavěného klienta OpenSSH, kterého Windows 10 dodává roky, o kterém jste nevěděli.;) S Windows nepotřebujete Putty na SSH (pokud vám to neudělá radost, tak putty na, příteli.)
Přidání serveru OpenSSH do systému Windows
Z administrativního PowerShellu uvidím, jaké věci OpenSSH jsem povolil. Mohu to provést také zadáním „Funkce systému Windows“ z nabídky Start.
> Get-WindowsCapability -Online | ? Name -like 'OpenSSH*'
Name : OpenSSH.Client~~~~0.0.1.0
State : Installed
Name : OpenSSH.Server~~~~0.0.1.0
State : NotPresent
Vypadá to, že mám klienta OpenSSH, ale ne server. Mohu SSH z Windows, ale ne.
Přidám to podobným příkazem se super podivnou, ale zřejmě nezbytnou verzí na konci:
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
Spuštění SSHD v systému Windows jako služba
Jakmile to skončí (a můžete to samozřejmě spustit také s OpenSSH.Client, abyste získali obě strany, pokud jste to neměli), pak můžete spustit server SSH (jako službu Windows) s tímto a poté se ujistěte, že běží.
Start-Service sshd
Get-Service sshd
Vzhledem k tomu, že se jedná o službu Windows, můžete ji vidět jako „OpenSSH SSH Server“ v services.msc a také ji můžete nastavit tak, aby se spouštěla automaticky při spuštění, pokud chcete. Můžete to udělat znovu, pokud chcete, z PowerShellu
Set-Service -Name sshd -StartupType 'Automatic'
Pamatujte, že používáme SSH přes port 22, takže v tomto okamžiku budete mít pravidlo brány firewall příchozí na 22. Je na vás, abyste si byli vědomi bezpečnosti. Možná povolíte SSHing do svého počítače se systémem Windows pouze s veřejnými klíči (bez hesel) nebo vám to možná nevadí. Buďte si vědomi, že je to na vás, ne na mně.
Nyní mohu z jakéhokoli počítače se systémem Linux (nebo Windows) SSH do svého počítače s Windows jako profesionál! Poznámka:Používám příponu domény .local, abych se ujistil, že do své VPN nezískám počítač (zůstane v mé místní podsíti)
$ ssh [email protected]
Microsoft Windows [Version 10.0.19041.113]
(c) 2020 Microsoft Corporation. All rights reserved.
scott@IRONHEART C:\Users\scott>pwsh
PowerShell 7.0.0
Copyright (c) Microsoft Corporation. All rights reserved.
https://aka.ms/powershell
Type 'help' to get help.
Loading personal and system profiles took 1385ms.
⚡ scott@IRONHEART>
Všimněte si, že když jsem SSH vstoupil do Windows, dostal jsem výchozí prostředí cmd.exe. Pamatujte také, že je rozdíl mezi konzolí, terminálem a shellem! Mohu ssh s jakýmkoli terminálem do jakéhokoli stroje a skončit v jakémkoli shellu. V tomto případě byl DEFAULT cmd.exe, což není optimální.
Konfigurace výchozího prostředí pro OpenSSH ve Windows
Na svém serveru (počítači se systémem Windows, na který používám SSH) nastavím klíč registru pro nastavení výchozího prostředí. V tomto případě použiji open source multiplatformní PowerShell Core. Můžete použít cokoliv, co vám udělá radost.
New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\Program Files\PowerShell\7\pwsh.exe" -PropertyType String -Force
Když teď připojím ssh do svého počítače se systémem Windows odjinud (dokonce i z iPadu!), získám prostředí, které chci:
$ ssh [email protected]
PowerShell 7.0.0
Copyright (c) Microsoft Corporation. All rights reserved.
https://aka.ms/powershell
Type 'help' to get help.
Loading personal and system profiles took 1854ms.
⚡ scott@IRONHEART>
Ještě lepší, kdybych chtěl přidat položku nabídky (profil) do svého terminálu Windows se záznamem pro můj počítač Windows, který by mě do něj automaticky přihlásil odjinud pomocí veřejných klíčů, mohl bych to udělat také!
Navíc, nyní, když je toto nastaveno, mohu k přenosu souborů používat WinSCP (dostupný v obchodě Windows) a také scp (Secure Copy).
Samozřejmě můžete také použít WinRM nebo PowerShell Remoting přes SSH, ale pro moji malou interní síť jsem zjistil, že tento mechanismus je jednoduchý a čistý. Moje mlčení je teď nedenominační!
Sponzor: Zkoušeli jste už vývoj v Rideru? Toto rychlé a na funkce bohaté multiplatformní IDE vylepšuje váš kód pro aplikace .NET, ASP.NET, .NET Core, Xamarin a Unity na Windows, Mac a Linux.