Dies ist ein interessanter Blog-Beitrag zum SSH-Einstieg in WSL2 unter Windows 10 von einem externen Computer aus. Lies es. Wissen, wie es funktioniert. Lern es. UND MACHEN SIE ES NICHT, WEIL ES ZU KOMPLEX IST .
MACH DAS NICHT. Das ist gut. Es klappt. Aber es ist barock. Sie leiten Ports in ein kleines VM-basiertes lokales Subnetz weiter, Sie haben es mit sich ändernden WSL2-IP-Adressen zu tun, Sie müssen Ihre VM am Laufen halten und Sie versuchen im Allgemeinen, bergauf Schlittschuh zu laufen.
Hier ist das Ding. In diesem Beitrag – was Sie nicht tun sollten – schalten Sie die Windows-Firewall für Ihren Port aus, leiten an ein internes Subnetz weiter und lassen dann WSL übernehmen.
ABER! Windows 10 weiß bereits, wie SSH-Verbindungen akzeptiert werden. Tatsächlich wird OpenSSH seit Jahren als „Feature on Demand“ ausgeliefert. Das Problem ist, dass Sie (Mac- und Linux-Umsteiger) die Standard-Shell – PowerShell – nicht mögen.
Warum also nicht die standardmäßige Windows-Shell für SSH in Bash von WSL2 ändern?
Boom. Jetzt haben Sie keine Portweiterleitung, Firewalls öffnen sich nur für einen Prozess und Ihre WSL2-Instanz startet beim Eintritt. Buchstäblich die beste aller Welten.
Wie richten Sie SSH in WSL2 auf Ihrem Windows 10-Rechner ein
Öffnen Sie zuerst eine Admin-PowerShell-Eingabeaufforderung (Startmenü, geben Sie PowerShell ein, halten Sie Strg+Shift gedrückt und drücken Sie die Eingabetaste), geben Sie Folgendes ein:
> Get-WindowsCapability -Online | ? Name -like 'OpenSSH*'
Name : OpenSSH.Client~~~~0.0.1.0
State : Installed
Name : OpenSSH.Server~~~~0.0.1.0
State : NotPresent
Sehen Sie, wie ich den Client und nicht den OpenSSH-Server habe? Fügen Sie es hinzu:
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
Starten Sie nun entweder den SSHD-Dienst oder stellen Sie ihn auf automatischen Start ein:
Start-Service sshd
Get-Service sshd
oder automatisch:
Set-Service -Name sshd -StartupType 'Automatic'
Konfigurieren der Standard-Shell für OpenSSH in Windows 10
Auf meinem Server (dem Windows-Rechner, auf dem ich SSH verwende) werde ich einen Registrierungsschlüssel festlegen, um die Standard-Shell festzulegen. In diesem Fall verwende ich Open Source Cross-Plattform PowerShell Core. Sie können verwenden, was Sie glücklich macht, und die Bash von WSL2 macht mich glücklich.
New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\WINDOWS\System32\bash.exe" -PropertyType String -Force
Beachten Sie, dass bash.exe in diesem Kontext "wsl -d YOURDEFAULTDISTRO
" startet " Sie möchten also wissen, was Ihre Standardeinstellung ist, und wenn Sie sie nicht mögen, ändern Sie sie mit wsl --set-default DISTRO
.
HEADS UP:Sie benötigen den VOLLSTÄNDIGEN UND KORREKTEN PFAD in diesem Befehl oben. Es funktioniert für jede Shell. Da ich bash.exe verwende, starte ich WSL2 kostenlos, aber SSH mit dieser Lösung verwendet die SSH-Schlüssel von Windows und die Windows-Authentifizierung. Beachten Sie dies, wenn Sie Ihr Passwort zur Authentifizierung eingeben!
Noch besser, wenn ich einem lokalen Windows-Terminal einen Menüpunkt (Profil) mit einem Eintrag für ssh in meine WSL auf meinem entfernten Windows-Rechner hinzufügen wollte, der mich automatisch von woanders mit öffentlichen Schlüsseln anmelden würde, könnte ich das auch tun!
Abschließend und zusammenfassend:
- Dieser Blogpost – der, den Sie gerade lesen – verwendet OpenSSH von Windows und authentifiziert sich bei Windows und führt dann WSL2 aus. WSL2 startet, verwendet Bash und Windows verarbeitet den TCP-Verkehr.
- Dieser andere Blogpost - hier drüben - 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.
Verstehen Sie, was Sie wollen und verwenden Sie das Richtige für Sie.
Genießen!
Sponsor: Fehler im Produkt? Gehen Sie der Sache schnell auf den Grund, mit der Suche nach Live-Produktionsprotokollen in Seq 2020.1.