GNU/Linux >> Znalost Linux >  >> Linux

Jak SSH do WSL2 na Windows 10 z externího počítače

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.


Linux
  1. Jak na SSH na Linuxu z Androidu

  2. Ssh – Přístup k linuxovému serveru z počítače se systémem Windows v grafickém režimu přes Ssh?

  3. Windows – Jak zabránit Windows v přepsání Grub při použití stroje s duálním spouštěním?

  1. Jak SSH do konkrétního adresáře?

  2. Spuštění souboru exe nebo bat na vzdáleném počítači se systémem Windows z *nix

  3. Vypněte počítač se systémem Windows z linuxového terminálu

  1. Jak Scp přes střední stroj?

  2. Jak SCP z linuxového serveru na Windows klienta

  3. Jak vložit do nano ze schránky?