Question Comment puis-je SSH dans "Bash on Ubuntu sur Windows 10"?


J'ai Windows 10 Anniversary Edition avec "Bash on Ubuntu on Windows" installé et fonctionnel. Je voudrais pouvoir SSH dans cette instance d'Ubuntu, mais bien que j'installe et configure le serveur openssh (et écoute sur le port 2200), quand j'essaie de ssh pour "localhost: 2200", il me dit "serveur inattendu connexion réseau fermée ".

Quelqu'un a-t-il réussi à accomplir cela?

enter image description here


80
2017-08-09 14:52


origine


En utilisant Process Hacker et en regardant l'onglet «Réseau», il montre que sshd (exécuté sur Ubuntu sur Windows 10) écoute sur le port local 2200. - Mick
et si vous essayez de vous connecter à l'adresse IP du système? Ubuntu mappe souvent les adresses de bouclage différemment de Windows et utilise des valeurs supplémentaires dans 127.0.0.0/8 (souvent 127.0.1.1) - Frank Thomas
@ Ramhound: pas vrai. Localhost est localhost et tout est partagé. Vous pouvez parfaitement faire links http://localhost/ à partir du sous-système Linux et voir la page Web fournie par IIS du côté Windows. Il n'y a pas de séparation. - Sami Kuhmonen


Réponses:


Je l'ai fait fonctionner; Voici comment.

Ssh-server désinstallé, réinstallé et fait en sorte qu'il soit démarré avec

sudo service ssh --full-restart

Assurez-vous d'avoir désactivé l'accès root et ajouté un autre utilisateur dans le fichier de configuration.

J'ai pu me connecter au sous-système sur 127.0.0.1:22 comme prévu. J'espère que cela t'aidera.

Here's a screenshot.

  1. sudo apt-get purge openssh-server
  2. sudo apt-get install openssh-server
  3. sudo nano /etc/ssh/sshd_config et interdire la connexion root en définissant PermitRootLogin no
  4. Ensuite, ajoutez une ligne qui dit:

    AllowUsers yourusername

    et assurez-vous PasswordAuthentication est réglé sur yes si vous voulez vous connecter en utilisant un mot de passe.

  5. Désactiver la séparation des privilèges en ajoutant / modifiant: UsePrivilegeSeparation no

  6. sudo service ssh --full-restart

  7. Connectez-vous à votre sous-système Linux à partir de Windows en utilisant un client ssh comme PuTTY.


93
2017-08-16 14:02



Je n'ai pas eu à le faire - étrange .. mais rappelez-vous que cela est encore en phase bêta, donc les résultats peuvent varier - Master Azazel
De plus, je devais: Arrêter / Désactiver les services de serveur SSH Server Windows 10 à partir du panneau de configuration des services et définir: PubkeyAuthentication no dans le sshdconfig - math0ne
Je devais aussi ajouter une règle de pare-feu. Il y avait une règle existante, mais c'était uniquement pour le proxy Windows SSH Server, et lorsque j'ai arrêté ce service, le pare-feu a bloqué le trafic sur le port 22. - Pierre-Luc Paour
J'ai aussi dû changer de port (Port 2222 dans /etc/ssh/sshd_config fichier), sinon le serveur ssh de Windows a pris la connexion sur le port 22. - arod
@ArtemRussakovskii ils arrêtent tout le sous-système Linux chaque fois que vous fermez la fenêtre bash ... - Sakher


Comme l'implémentation de Windows ne fournit pas chroot, vous devez modifier le fichier / etc / ssh / sshd_config.

UsePrivilegeSeparation no

Vous devrez également créer un utilisateur en utilisant la commande useradd ou à peu près.


23
2017-08-09 20:45



Cette étape était essentielle pour que cela fonctionne. - Mick
J'étais curieux, alors j'ai trouvé ça chez freebsd.org/cgi/man.cgi?sshd_config(5): UsePrivilegeSeparation: - krs013
Spécifie si sshd (8) sépare les privilèges en créant un processus enfant non privilégié pour gérer le trafic réseau entrant. Après une authentification réussie, un autre processus sera créé avec le privilège de l'utilisateur authentifié. L'objectif de la séparation des privilèges est d'empêcher l'escalade de privilèges en contenant toute corruption au sein des processus non privilégiés. L'argument doit être "yes", "no" ou "sandbox". Si UsePrivilegeSeparation est défini sur "sandbox", le processus sans authentification préalable à l'authentification est soumis à des restrictions supplémentaires. La valeur par défaut est "sandbox". - krs013
WSL a mis en place chroot en septembre 2016 (après cette réponse). - GreenReaper


Les réponses ci-dessus au comité étaient excellentes. Merci pour eux. Et pendant qu'ils se sont rapprochés, j'avais encore Connexion fermée par 127.0.0.1 problèmes.

J'ai trouvé et ajouté des étapes supplémentaires à partir de ce post ce qui m'a fait surpasser. En particulier, recommencer et ajouter ceci comme première / première étape (notez la --purge qualificatif), a finalement résolu ma variation de ce problème:

sudo apt-get remove --purge openssh-server
sudo apt-get install openssh-server
sudo vi /etc/ssh/sshd_config # Change Port from 22 to 2222 (Just in case MS-Windows is using port 22; which, by the way, SSH on MS-Windows can be disabled if you want to use port 22).
sudo service ssh --full-restart

Merci encore, j'espère que cet ajout aidera les autres. = :)


16
2018-05-16 02:58



Pourquoi la descente? Ces instructions à elles seules ne fonctionnaient pas dans mon cas, comme mentionné, et l’étape supplémentaire ci-dessus a fonctionné. Je ne comprends pas. - prismalytics.io
J'avais une erreur très différente "Aucune méthode d'authentification prise en charge disponible (serveur envoyé: publickey)" et ces étapes ont été corrigées. - Mike Viens
Pour une raison quelconque, Windows n’appréciait tout simplement pas que j’utilisais le port 2222. Il n’a jamais montré d’autres processus l’utilisant, et il n’y avait aucune preuve de conflit de port, mais dès que j’ai changé de port, il a commencé à travail. - forresthopkinsa


J'ai tout fait comme l'a suggéré Maître Azazel et j'ai eu le problème. Quand je me suis connecté au port 22 On m'a demandé un mot de passe, mais le mot de passe que j'ai défini dans le sous-système Linux ne fonctionnait pas.

Solution n ° 1:
changer le port SSH dans /etc/ssh/sshd_config et redémarrer le serveur SSH dans le sous-système

Solution n ° 2:
Désactivez / arrêtez le "SSH Server Broker Services" dans le panneau de configuration des services de Windows et redémarrez le serveur SSH dans le sous-système.


5
2017-11-17 09:57



Cela ne s'applique que si vous avez quelque chose en cours d'exécution sur Windows sur le port 22. - Master Azazel
Ofcz, comme vous le voyez sur mon installation par défaut de win10, un service fonctionnait sur 22 ... - scotty86


La raison pour laquelle vous ne pouvez pas y accéder est affichée dans le journal du serveur:

chroot ("/ var / run / sshd"): Fonction non implémentée [preauth]

Le sous-système Linux ne semble pas avoir implémenté chroot et le serveur ssh en a besoin pour que la connexion ne soit pas autorisée.


2
2017-08-09 16:46



Ce qui est correct .. mais les autres réponses expliquent comment contourner l'exigence de chroot. - Mahmoud Al-Qudsi