Trouvé un tutoriel pour cela en aseering:
Cela a été initialement discuté et trié par les utilisateurs de github imjakey, fpqc, qris, therealkenc, Manouchehri et aseering (moi-même) ici:
https://github.com/Microsoft/BashOnWindows/issues/612
Notez que l'exécution de sshd a des implications sur la sécurité. Jusqu'à ce que le modèle de sécurité de WSL ait mis plus de temps à cuire, vous devez supposer que toute personne qui peut ssh dans votre boîte Windows a la permission d'exécuter n'importe quelle commande en tant qu'utilisateur Windows exécutant sshd, indépendamment des autorisations au niveau Linux. (Les autorisations sont probablement plus restrictives que dans la pratique, mais le modèle de sécurité initial de WSL n'est pas censé être très sophistiqué.)
Tentative d'agrégation des instructions de github:
- Générez des clés d'hôte SSH en exécutant
sudo dpkg-reconfigure
openssh-server
dans un shell bash
- Run
sudo nano /etc/ssh/sshd_config
; éditez la UsePrivilegeSeparation yes
ligne à lire
UsePrivilegeSeparation no
. (Ceci est nécessaire car
UsePrivilegeSeparation
utilise l'appel chroot()
système, que WSL ne prend pas en charge actuellement.)
- Pendant la modification
/etc/ssh/sshd_config
, vous pouvez choisir de passer
PasswordAuthentication no
à PasswordAuthentication yes
. Sinon, vous devrez configurer des clés SSH.
- Enregistrez
/etc/ssh/sshd_config
et quittez.
Exécutez sudo visudo
pour modifier le fichier sudoers. Ajoutez la ligne
$USER ALL = (root) NOPASSWD: /usr/sbin/sshd -D
en remplaçant "$ USER" par votre nom d'utilisateur Linux. Sauvegarder et quitter. Si visudo se plaint que vos modifications ne sont pas valides, corrigez-les jusqu'à ce qu'il signale qu'elles sont valides; sinon vous pouvez casser sudo sur votre système!
- Côté Windows, modifiez le pare-feu Windows (et tous les pare-feu tiers que vous exécutez) pour autoriser le trafic entrant sur le port 22. Étant donné qu'il ne s'agit pas d'une configuration super sécurisée, je recommande d'autoriser uniquement le trafic entrant depuis la maison ( privés) et les réseaux de domaine, pas à partir d'Internet public.
Créez un fichier texte
autostartssh.vbs
dans Windows contenant les éléments suivants:
set ws=wscript.createobject("wscript.shell")
ws.run "C:\Windows\System32\bash.exe -c 'sudo /usr/sbin/sshd -D'",0
- Double-cliquez sur le script. Il devrait démarrer sshd; vous devriez pouvoir accéder à ssh sur votre machine Windows.
- Ouvrez le Planificateur de tâches de Windows. Ajoutez une tâche qui s'exécute
autostartssh.vbs
au démarrage du système. Utilisez wscript.exe
comme commande à exécuter et l'emplacement du script VBS comme paramètre.
Et c'est tout - votre ordinateur Windows devrait exécuter un serveur Linux openssh!
UsePrivilegeSeparation = yes
, sauf qu'il faut également exécutersudo /bin/mkdir -p /var/run/sshd
(pour créer les répertoires de séparation des privilèges) avant de démarrer sshd. Est-ce que WLS prend désormais en charge chroot (), y a-t-il une solution de contournement en place dans la source openssh, ou le= No
paramètre est-il plutôt une recommandation de sécurité? De plus, la tâche Windows ne semble fonctionner pour moi que si mon utilisateur est connecté./etc/ssh/sshd_config
qui se litPort 22
et passez àPort 8822
. Une des raisons à cela est que Windows exécute une sorte de processus SSH sur 22. J'ai vu des suggestions disant qu'il n'y avait pas de problème avec la désactivation de cela, mais j'ai trouvé qu'il était plus facile de simplement changer le port WSL SSH.J'ai dû faire la même chose.
Voici comment démarrer le sous-système Ubuntu Linux avec tous les services de cron au démarrage de Windows et fournir un moyen de «redémarrer» le sous-système Linux.
J'héberge avec succès la base de données openssh-server, nginx & mariadb sur notre serveur.
Installer le sous-système Linux
Pâte:
Installez Ubuntu à partir du Windows Store.
Supprimer l'invite de mot de passe sudo (obligatoire)
Pâte:
Activer la connexion par mot de passe SSH (facultatif)
Pâte:
Ouverture de session Windows au démarrage (obligatoire si vous avez un mot de passe ou un RDP)
Accédez à
Créez une nouvelle chaîne
DefaultPassword
et écrivez le mot de passe de l'utilisateur comme valeur.Exécuter la boucle bash / cron au démarrage
linux.bat
dansshell:startup
Pâte:
Ajouter des applications / services au démarrage sur cron
sudo crontab -e
Ajoutez des applications de démarrage telles que openssh-server, nginx, mysql, php:
Enregistrer et quitter:, ctrlxpuis appuyez sur yet enter.
Redémarrez le sous-système Linux sans redémarrer Windows
Ouvrez bash ou SSH dans
Cela fermera l'instance actuelle et en créera une nouvelle en appliquant cron.
Extra - Installez PHP 7.1 (pas aussi simple)
Exécutez les commandes ci-dessous pour une configuration assez standard:
Exécutez la commande ci-dessous pour une configuration 'OwnCloud':
Extra - Installer le serveur Web nginx
Exécutez les commandes ci-dessous pour une configuration de base avec PHP7.1:
Extra - Installer la base de données mysql de mariadb
Exécutez les commandes ci-dessous pour un serveur de base de données mysql:
Lorsque vous y êtes invité, définissez un mot de passe utilisateur de base de données racine.
la source
La réponse de @poma est très bonne, et c'est ce sur quoi ma réponse est basée. Je veux cependant y ajouter quelques améliorations:
service
au lieu d'appelersshd
directement:'sudo service ssh start'
au lieu de'sudo /usr/sbin/sshd -D'
. De cette façon, même si vous appelez le script plusieurs fois, il n'y aura qu'un maximum desshd
processus. De plus, il est facile de le tuer avec un autre script qui s'exécute'sudo service ssh stop'
. Dans le fichier sudoers, il vous suffit de le remplacer/usr/sbin/sshd -D
par/usr/sbin/service
.sshd
directement, supprimez l'-D
option , car cela mettra un processus au premier plan indéfiniment. Si vous ne me croyez pas, faites-letop
et vous verrez uninit
et unsudo
processus pour chaque fois que vous appelez le script. N'oubliez pas de supprimer également l'-D
option du fichier sudoers!autostartsshd.ps1
et collez ce qui suit:bash -c 'sudo service ssh start'
. Pour exécuter le script, faites un clic droit dessus et cliquez surRun with PowerShell
.Une autre question de dépassement de pile a des étapes similaires: /superuser//a/1114162/182590
J'espère que cela aide quelqu'un :)
la source
sudo service ssh start
et fermez bash, il tuera le démon ssh. C'est du moins ce qu'il a fait au moment d'écrire mon guide.mettre
bash -c "echo [password] | service ssh start"
dans le script de démarrage de Windows et utiliser votre propre mot de passe sudo pour remplacer [mot de passe]la source
sudo
mot-clé nécessaire que votre phrase implique). Cela ne fonctionne tout simplement pas. Non pas que vous devriez de toute façon stocker votre mot de passe en texte clair!Les réponses @Poma et @Hintron sont excellentes.
Je voudrais étendre la description du dernier point sur la façon d'ajouter une tâche ssh dans le Planificateur de tâches Windows car cela nécessite de changer certaines options:
Il est utilisé l'invocation directe de bash. Il n'est pas nécessaire de l'envelopper dans des scripts vbs ou PowerShell.
J'utilise la commande de service pour des raisons expliquées par @Hintron. De plus, l'invocation directe de sshd donne une erreur
Dans ce cas, il faut ajouter cette entrée par
sudo visudo
commandeNotez également qu'ici tous les utilisateurs (première colonne) peuvent démarrer ou arrêter sshd. Si vous n'êtes qu'un utilisateur de cette machine Windows, cela devrait aller.
la source
Créez un fichier nommé
wsl_setup.bat
et ajoutez du contenu comme suitAjouter un
wsl_setup.bat
fichier au dossier de démarrage de Windows windows-10-change-startup-appsRedémarrez et connectez-vous à votre compte Windows (oui, vous devez vous connecter)
la source