GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So führen Sie SSH in WSL2 unter Windows 10 von einem externen Computer aus

Cooler Blogpost, oder? Guter Titel, oder?

BEFOLGEN SIE NICHT DIE ANWEISUNGEN IN DIESEM POST

bis Sie die FOLLOW UP THE EASY WAY gelesen haben, wie man SSH in Bash und WSL2 unter Windows 10 von einem externen Rechner aus macht und die richtige Entscheidung für SIE getroffen hat!

OpenSSH wird seit 5 Jahren in Windows ausgeliefert, das ist also cool. Du kannst viele Dinge tun!

  • So verwenden Sie das in Windows 10 integrierte OpenSSH, um automatisch per SSH eine Verbindung zu einem Remote-Linux-Computer herzustellen
  • Wie man SSH in einen Windows 10-Rechner von Linux ODER Windows ODER irgendwoher einfügt

Aber oft möchten die Leute SSH nicht verwenden in ihren Windows 10-Rechner, sondern in WSL2, das innerhalb/hinter ihrem Windows 10-Rechner läuft. Während WSL2 Ports von innen nach außen weiterleiten kann (z. B. localhost:8000 innerhalb einer WSL2-Instanz, die vom lokalen Windows 10-Computer verfügbar gemacht wird), müssen Sie, wenn Sie einen Pfad zu einem WSL2-Port von vollständig außerhalb eines Computers erstellen möchten müssen viel expliziter sein.

OpenSSH-Server in WSL installieren

Installieren Sie zuerst den OpenSSH-Server in Ihrer Linux-Distribution:

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.

Entscheiden Sie sich für Ihre SSH-Portnummer

Bearbeiten Sie als Nächstes in WSL2 /etc/ssh/sshd_config und kommentieren Sie die Port-Zeile aus.

Ich habe es mit sudo nano /etc/ssh/sshd_config bearbeitet , keine Schande!

SSH ist normalerweise 22, aber ich verwende gerne so etwas wie 2222, also ist es weniger offensichtlich, aber immer noch leicht zu merken UND unterscheidet sich von der 22 Ihres Windows-Computers. Sie können PasswordAuthentication auch auf „no“ setzen, wenn Sie SSH-Schlüssel anstelle von Passwörtern zur Authentifizierung verwenden möchten. Setzen Sie es auf "yes", wenn Sie wissen, was Sie tun, und nicht wissen, wie man ssh-Schlüssel verwendet.

/etc/ssh/sshd_config

...STUFF ABOVE THIS...
Port 2222
#AddressFamily any
ListenAddress 0.0.0.0
#ListenAddress ::

...STUFF BELOW THIS...

Rufen Sie in WSL2 Ihre IP-Adresse mit "ifconfig" ab. Meine ist 172.23.129.80, deine wird wahrscheinlich 172.SOMETHINGELSE sein und wird sich ändern, wenn WSL2 kalt startet .

Vielleicht möchten Sie sicherstellen, dass es läuft, wenn man bedenkt, dass WSL2 kein systemd hat.

service ssh start

Ports in WSL2 weiterleiten

Jetzt von einer Administrator-Windows-Eingabeaufforderung aus - Das kann cmd.exe oder powershell.exe sein, es spielt keine Rolle, verwenden Sie die Net-Shell "netsh", um eine Portproxy-Regel hinzuzufügen. Ändern Sie wieder die Verbindungsadresse in IHRE WSL2-IP-Adresse, die eine interne Adresse Ihres Computers ist.

netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=2222 connectaddress=172.23.129.80 connectport=2222

Öffnen Sie die Firewall

Öffnen Sie als Nächstes von derselben Administrator-Windows-Eingabeaufforderung aus einen eingehenden Firewall-Port. Sie können dies über die erweiterten Firewall-Einstellungen tun, aber noch einfacher können Sie wieder netsh verwenden!

netsh advfirewall firewall add rule name=”Open Port 2222 for WSL2” dir=in action=allow protocol=TCP localport=2222

Sie können alle Ihre Portproxy-Regeln wie folgt auflisten, wenn Sie besorgt sind:

netsh interface portproxy show v4tov4

Sie können sie alle entfernen, wenn Sie möchten mit

netsh int portproxy reset all

Eine Skriptlösung?

GitHub-Benutzer und Community-Mitglied Daehahn arbeitet an einem PowerShell-Skript, um diesen Prozess zu automatisieren. Der Kommentar-Thread beginnt hier und das Wesentliche für das PowerShell-Skript für wsl2-network.ps1 ist hier. Es setzt Firewall und Portproxys zurück, findet die neue IP Ihrer Standarddistribution und richtet Sie neu ein. Speichern Sie diese .ps1-Datei irgendwo, lesen Sie sie und führen Sie „unblock-file wsl2-network.ps1“ aus " darauf, damit Sie Ihr System schnell für das Shushing in Ihre WSL2-Instanz einrichten können!

Beachten Sie die $Ports-Variable, die wahrscheinlich mehr öffnet, als Sie möchten oder brauchen, und denken Sie daran, dass WSL und VS Code Ports automatisch an localhost weiterleiten, wenn sie für die Entwicklung benötigt werden.

Hoffe das hilft! Es wäre schön, wenn WSL2 seine interne IP-Adresse nicht bei jedem Start ändern würde, damit dies noch einfacher und automatisierter erfolgen könnte.

Abschließend und zusammenfassend:

  • Dieser Blogpost – der, den Sie gerade lesen – hat nur Windows-Weiterleitungsports und verwendet Linux OpenSSH von WSL2 und authentifiziert sich gegen Linux. Windows ist nur am Rande beteiligt. Die WSL2-IP-Adresse ändert sich beim Neustart und Sie müssen Ihre Portproxy-Regeln und Firewall-Regeln mit dem am Ende dieses Beitrags abgehörten Skript beibehalten.
  • Dieser andere Blogpost - hier drüben - verwendet OpenSSH von Windows und authentifiziert sich mit Windows und führt dann WSL2 aus. WSL2 startet, verwendet Bash und Windows verarbeitet den TCP-Verkehr.

Verstehen Sie, was Sie wollen und verwenden Sie das Richtige für Sie.

Andere coole Links:

  • Docker Desktop für WSL 2 integriert Windows 10 und Linux noch enger
  • Remotedebuggen einer .NET Core-Linux-App in WSL2 von Visual Studio unter Windows
  • Coole Tipps und Tricks zu WSL (Windows Subsystem for Linux), von denen Sie (oder ich) nicht wussten, dass sie möglich sind
  • Ruby on Rails unter Windows ist nicht nur möglich, es ist fabelhaft mit WSL2 und VS Code
  • Verschieben Sie WSL-Verteilungen einfach zwischen Windows 10-Rechnern mit Import und Export!
  • Was ist der Unterschied zwischen einer Konsole, einem Terminal und einer Shell?

Hoffe das hilft! Bitte abonnieren Sie auch meinen YouTube-Kanal!

Sponsor: Verpassen Sie nie wieder einen Fehler – senden Sie mit Seq 2020.1 Benachrichtigungen an Slack oder per E-Mail und finden Sie Probleme, bevor es Ihre Kunden tun.


Linux
  1. Wie man SSH unter Linux von Android aus macht

  2. Ssh – Zugriff auf den Linux-Server von einem Windows-Computer im grafischen Modus über Ssh?

  3. Windows – Wie kann man verhindern, dass Windows Grub überschreibt, wenn man einen Dual-Boot-Rechner verwendet?

  4. Wie man in ein bestimmtes Verzeichnis ssh?

  5. Fahren Sie den Windows-Rechner vom Linux-Terminal herunter

So führen Sie SSH in einen Docker-Container ein

Wie Sie von Windows aus SSH in Ihren Linux-Server einbinden

Wie verbinde ich mich mit Linux VPS über SSH von Linux und Windows OS?

DER EINFACHE WEG, wie man SSH in Bash und WSL2 unter Windows 10 von einem externen Computer aus macht

Wie man SSH in einen Windows 10-Rechner von Linux ODER Windows ODER überall her einfügt

So richten Sie ein Registerkartenprofil in Windows Terminal ein, um automatisch SSH in eine Linux-Box einzubinden