Super blogový příspěvek, že? Dobrý název, že?
NEPROVÁDĚJTE POKYNY V TOMTO PŘÍSPĚVKU
dokud si nepřečtete NÁSLEDUJÍCÍ SNADNÝ ZPŮSOB, jak SSH do Bash a WSL2 ve Windows 10 z externího počítače a neučiníte správné rozhodnutí pro VÁS!
OpenSSH je dodáván ve Windows již 5 let, takže je to skvělé. Můžete dělat spoustu věcí!
- Jak používat vestavěný OpenSSH Windows 10 k automatickému SSH do vzdáleného počítače se systémem Linux
- Jak SSH do počítače s Windows 10 z Linuxu NEBO Windows NEBO odkudkoli
Ale lidé často chtějí SSH ne do svého počítače s Windows 10, ale spíše do WSL2 běžícího v rámci/za jejich počítačem s Windows 10. Zatímco WSL2 může předávat porty zevnitř ven (například localhost:8000 v rámci instance WSL2 zpřístupněné z místního počítače Windows 10), pokud chcete vytvořit cestu k portu WSL2 zcela mimo počítač, musí být mnohem jasnější.
Nainstalujte OpenSSH-Server do WSL
Nejprve nainstalujte OpenSSH server do vašeho Linux Distro:
scott@IRONHEART:~$ sudo apt install openssh-server
[sudo] password for scott:
Reading package lists... Done
Building dependency tree
Reading state information... Done
openssh-server is already the newest version (1:7.6p1-4ubuntu0.3).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Rozhodněte se pro číslo portu SSH
Dále ve WSL2 upravte /etc/ssh/sshd_config a odkomentujte řádek Port.
Upravil jsem to pomocí
sudo nano /etc/ssh/sshd_config
, žádná ostuda!
SSH je obvykle 22, ale rád používám něco jako 2222, takže je to méně zřejmé, ale stále snadno zapamatovatelné A liší se od 22 vašeho počítače s Windows. Všimněte si, že jsem mu řekl, aby poslouchal na 0.0.0.0, takže jakýkoli adaptér. Můžete také nastavit PasswordAuthentication na "no", pokud chcete pro autentizaci používat SSH klíče místo hesel. Nastavte jej na „ano“, pokud víte, co děláte, a nevíte, jak používat ssh klíče.
/etc/ssh/sshd_config
...STUFF ABOVE THIS...
Port 2222
#AddressFamily any
ListenAddress 0.0.0.0
#ListenAddress ::
...STUFF BELOW THIS...
Z WSL2 získejte svou IP adresu pomocí "ifconfig." Moje je 172.23.129.80, vaše bude pravděpodobně 172.SOMETHINGELSE a změní se, když se WSL2 spustí za studena .
Možná se budete chtít ujistit, že běží, protože WSL2 nemá systemd.
service ssh start
Přesměrovat porty do WSL2
Nyní z výzvy administrátora systému Windows - to může být cmd.exe nebo powershell.exe, na tom nezáleží, použijte net shell "netsh" pro přidání pravidla portproxy. Znovu změňte adresu připojení na VAŠI IP adresu WSL2, což je interní adresa vašeho počítače.
netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=2222 connectaddress=172.23.129.80 connectport=2222
Otevřete bránu firewall
Dále ze stejné výzvy správce Windows otevřete příchozí port brány firewall. Můžete to udělat z pokročilých nastavení brány firewall, ale ještě jednodušší můžete znovu použít netsh!
netsh advfirewall firewall add rule name=”Open Port 2222 for WSL2” dir=in action=allow protocol=TCP localport=2222
Pokud vás to zajímá, můžete uvést všechna pravidla portproxy takto:
netsh interface portproxy show v4tov4
Pokud chcete, můžete je všechny odstranit pomocí
netsh int portproxy reset all
Skriptované řešení?
Uživatel GitHub a člen komunity Daehahn pracuje na skriptu PowerShell k automatizaci tohoto procesu. Vlákno komentářů začíná zde a podstata skriptu PowerShell pro wsl2-network.ps1 je zde. Resetuje firewall a portproxy, najde novou IP vaší výchozí distribuce a znovu vás nastaví. Uložte si tento soubor .ps1 někam, přečtěte si ho a spusťte "unblock-file wsl2-network.ps1
" na něm, takže můžete rychle nastavit svůj systém pro Shushing do vaší instance WSL2!
Všimněte si proměnné $Ports, která pravděpodobně otevírá více, než chcete nebo potřebujete, a nezapomeňte, že kód WSL a VS automaticky přepošle porty na localhost, když je to potřeba pro vývoj.
Snad to pomůže! Bylo by hezké, kdyby WSL2 neměnilo svou interní IP adresu při každém spuštění, aby to mohlo být ještě jednodušší a automatičtější.
Na závěr a shrnutí:
- Tento příspěvek na blogu – ten, který právě čtete, má pouze přesměrovací porty Windows a používá Linux OpenSSH WSL2 a ověřuje se proti Linuxu. Windows je zapojen pouze periferně. IP adresa WSL2 se po restartu změní a budete muset udržovat pravidla portproxy a pravidla brány firewall pomocí skriptu, který naslouchá na konci tohoto příspěvku.
- Tento další příspěvek na blogu – zde – používá OpenSSH systému Windows a ověřuje se systémem Windows a poté spouští WSL2. WSL2 se spouští, používá bash a Windows zpracovává TCP provoz.
Uvědomte si, co chcete, a použijte ten správný pro vás.
Další skvělé odkazy:
- Docker Desktop pro WSL 2 ještě těsněji integruje Windows 10 a Linux
- Vzdálené ladění aplikace .NET Core Linux ve WSL2 ze sady Visual Studio v systému Windows
- Super WSL (Windows Subsystem for Linux) tipy a triky, o kterých jste (nebo já) nevěděli, že jsou možné
- Ruby on Rails v systému Windows není jen možný, je báječný pomocí WSL2 a VS Code
- Snadno přesouvejte distribuce WSL mezi počítači se systémem Windows 10 pomocí importu a exportu!
- Jaký je rozdíl mezi konzolí, terminálem a shellem?
Snad to pomůže! Také se prosím přihlaste k odběru mého kanálu YouTube!
Sponzor: Nikdy nezmeškejte chybu – posílejte upozornění na Slack nebo e-mail a najděte problémy dříve, než je udělají vaši zákazníci, pomocí Seq 2020.1.