Fand ein Tutorial dafür von aseering:
Dies wurde ursprünglich von den github-Benutzern imjakey, fpqc, qris, therealkenc, Manouchehri und aseering (myself) hier besprochen und aussortiert:
https://github.com/Microsoft/BashOnWindows/issues/612
Beachten Sie, dass das Ausführen von sshd Auswirkungen auf die Sicherheit hat. Solange das Sicherheitsmodell der WSL noch nicht ausgereift ist, sollten Sie davon ausgehen, dass jeder, der in Ihre Windows-Box eindringen kann, die Berechtigung hat, einen beliebigen Befehl als Windows-Benutzer auszuführen, der sshd ausführt, unabhängig von den Berechtigungen auf Linux-Ebene. (Die Berechtigungen sind wahrscheinlich restriktiver als in der Praxis, aber das anfängliche Sicherheitsmodell der WSL ist nicht besonders ausgefeilt.)
Versuch, die Anweisungen von github zusammenzufassen:
- Generieren Sie SSH-Hostschlüssel, indem Sie sie
sudo dpkg-reconfigure
openssh-server
in einer Bash-Shell ausführen
- Run
sudo nano /etc/ssh/sshd_config
; Bearbeiten Sie die UsePrivilegeSeparation yes
zu lesende Zeile
UsePrivilegeSeparation no
. (Dies ist erforderlich, da
UsePrivilegeSeparation
der chroot()
Syscall verwendet wird, den die WSL derzeit nicht unterstützt.)
- Noch während der Bearbeitung
/etc/ssh/sshd_config
können wählen Sie ändern
PasswordAuthentication no
zu PasswordAuthentication yes
. Andernfalls müssen Sie SSH-Schlüssel einrichten.
- Speichern
/etc/ssh/sshd_config
und beenden.
Führen Sie aus sudo visudo
, um die sudoers-Datei zu bearbeiten. Fügen Sie die Zeile hinzu
$USER ALL = (root) NOPASSWD: /usr/sbin/sshd -D
Ersetzen Sie "$ USER" durch Ihren Linux-Benutzernamen. Speichern und schließen. Wenn visudo beschwert, dass Ihre Änderungen ungültig sind, korrigieren Sie sie, bis sie als gültig gemeldet werden. Andernfalls können Sie Sudo auf Ihrem System brechen!
- Bearbeiten Sie auf der Windows-Seite die Windows-Firewall (und eventuell von Ihnen ausgeführte Firewalls von Drittanbietern), um eingehenden Datenverkehr auf Port 22 zuzulassen. private) und Domain-Netzwerke, nicht aus dem öffentlichen Internet.
Erstellen Sie eine Textdatei
autostartssh.vbs
in Windows, die Folgendes enthält:
set ws=wscript.createobject("wscript.shell")
ws.run "C:\Windows\System32\bash.exe -c 'sudo /usr/sbin/sshd -D'",0
- Doppelklicken Sie auf das Skript. Es sollte sshd starten; Sie sollten in der Lage sein, in Ihren Windows-Computer zu sshen.
- Öffnen Sie den Windows-Taskplaner. Fügen Sie eine Task hinzu, die
autostartssh.vbs
beim Systemstart ausgeführt wird. Verwenden Sie wscript.exe
als auszuführenden Befehl und den Speicherort des VBS-Skripts als Parameter.
Und das war's - auf Ihrem Windows-Computer sollte ein Linux-OpenSh-Server ausgeführt werden!
UsePrivilegeSeparation = yes
, außer dass mansudo /bin/mkdir -p /var/run/sshd
vor dem Starten von sshd auch ausführen muss (um die Verzeichnisse für die Privilegentrennung zu erstellen). Unterstützt WLS jetzt chroot (), gibt es eine Problemumgehung in der OpenSh-Quelle oder ist die= No
Einstellung eher eine Sicherheitsempfehlung? Außerdem scheint die Windows-Aufgabe nur bei mir zu funktionieren, wenn mein Benutzer angemeldet ist./etc/ssh/sshd_config
,Port 22
und wechseln Sie zuPort 8822
. Ein Grund dafür ist, dass Windows unter 22 eine Art SSH-Prozess ausführt. Ich habe Vorschläge gesehen, wonach es kein Problem gibt, dies zu deaktivieren, aber ich fand es am einfachsten, den WSL-SSH-Port zu wechseln.Ich musste das Gleiche tun.
Hier erfahren Sie, wie Sie das Ubuntu Linux-Subsystem mit allen Diensten von cron beim Windows-Start booten und das Linux-Subsystem neu starten können.
Ich betreibe erfolgreich die Datenbank openssh-server, nginx & mariadb auf unserem Server.
Installieren Sie das Linux-Subsystem
Einfügen:
Installieren Sie Ubuntu aus dem Windows Store.
Aufforderung zum Entfernen des sudo-Passworts (erforderlich)
Einfügen:
SSH Passwort Login aktivieren (optional)
Einfügen:
Windows-Autologin beim Start (erforderlich, wenn Sie ein Passwort oder RDP haben)
Suchen Sie nach
Erstellen Sie eine neue Zeichenfolge
DefaultPassword
und schreiben Sie das Kennwort des Benutzers als Wert.Führen Sie beim Start eine Bash / Cron-Schleife aus
linux.bat
inshell:startup
Einfügen:
Hinzufügen von Apps / Diensten zum Starten auf cron
sudo crontab -e
Startup-Apps wie openssh-server, nginx, mysql, php anhängen:
Speichern und beenden:, ctrlxdann yund drücken enter.
Starten Sie das Linux-Subsystem neu, ohne Windows neu zu starten
Öffne bash oder SSH in
Dadurch wird die aktuelle Instanz geschlossen und eine neue erstellt, die cron anwendet.
Extra - Installiere PHP 7.1 (nicht ganz so einfach)
Führen Sie die folgenden Befehle aus, um ein ziemlich standardmäßiges Setup zu erhalten:
Führen Sie den folgenden Befehl für ein OwnCloud-Setup aus:
Extra - Installiere den nginx Webserver
Führen Sie die folgenden Befehle für ein Basis-Setup mit PHP7.1 aus:
Extra - Installieren Sie die MySQL-Datenbank von Mariadb
Führen Sie die folgenden Befehle für einen MySQL-Datenbankserver aus:
Wenn Sie dazu aufgefordert werden, legen Sie ein Kennwort für den Root-Datenbankbenutzer fest.
quelle
Die Antwort von @poma ist sehr gut und basiert auf meiner Antwort. Ich möchte jedoch einige Verbesserungen hinzufügen:
service
anstattsshd
direkt anzurufen :'sudo service ssh start'
anstelle von'sudo /usr/sbin/sshd -D'
. Selbst wenn Sie das Skript mehrmals aufrufen, gibt es auf diese Weise höchstens einensshd
Prozess. Es ist auch einfach, es mit einem anderen Skript zu beenden, das ausgeführt wird'sudo service ssh stop'
. In der sudoers-Datei müssen Sie lediglich ersetzen/usr/sbin/sshd -D
durch/usr/sbin/service
.sshd
direkt, loszuwerden, die-D
Option , weil das auf unbestimmte Zeit einen Prozess in den Vordergrund gestellt wird. Wenn Sie mir nicht glauben, tun Sie dies einfachtop
und Sie werden eineninit
und einensudo
Prozess für jedes Mal sehen, wenn Sie das Skript aufrufen. Vergiss nicht, die-D
Option auch in der sudoers-Datei zu entfernen !autostartsshd.ps1
und fügen Sie ihn in der folgenden:bash -c 'sudo service ssh start'
. Um das Skript auszuführen, klicken Sie mit der rechten Maustaste darauf und dann aufRun with PowerShell
.Eine andere Stapelüberlauffrage weist ähnliche Schritte auf: /superuser//a/1114162/182590
Hoffe das hilft jemandem :)
quelle
sudo service ssh start
bash ausführen und dann schließen, wird der ssh-Daemon beendet. Zumindest war es das, was es zum Zeitpunkt des Schreibens meines Leitfadens getan hat.Geben Sie das
bash -c "echo [password] | service ssh start"
Windows-Startskript ein und verwenden Sie Ihr eigenes sudo-Passwort, um [password] zu ersetzen.quelle
sudo
Schlüsselwort enthält, das Ihr Satz impliziert). Das geht einfach nicht. Nicht, dass Sie Ihr Passwort jemals im Klartext speichern sollten!Die Antworten von @Poma und @Hintron sind großartig.
Ich möchte die Beschreibung des letzten Punkts zum Hinzufügen einer SSH-Aufgabe in Windows Task Scheduler erweitern, da hier einige Optionen geändert werden müssen:
Es wird ein direkter Bash-Aufruf verwendet. Es ist nicht erforderlich, es in VBS- oder Powershell-Skripten einzubinden.
Ich verwende den Befehl service aus Gründen, die @Hintron erläutert hat. Zusätzlich führt ein direkter sshd-Aufruf zu Fehlern
In diesem Fall sollte dieser Eintrag per
sudo visudo
Befehl hinzugefügt werdenBeachten Sie auch, dass hier alle Benutzer (erste Spalte) sshd starten oder stoppen können. Wenn Sie nur ein Benutzer dieses Windows-Computers sind, sollte dies in Ordnung sein.
quelle
Erstellen Sie eine Datei mit dem Namen
wsl_setup.bat
und fügen Sie den Inhalt wie folgt hinzuIn -
wsl_setup.bat
Datei zu Windows Autostart - Ordner Windows-10-change-Startup-AnwendungenStarten Sie neu und melden Sie sich in Ihrem Windows-Konto an (ja, Sie müssen sich anmelden)
quelle