GNU/Linux >> Tutoriels Linux >  >> Linux

Comment se connecter en SSH à WSL2 sur Windows 10 à partir d'une machine externe

Cool article de blog hein ? Bon titre, non ?

NE SUIVEZ PAS LES INSTRUCTIONS DE CET ARTICLE

jusqu'à ce que vous ayez lu le FOLLOW UP THE EASY WAY comment SSH dans Bash et WSL2 sur Windows 10 à partir d'une machine externe et que vous ayez pris la bonne décision pour VOUS !

OpenSSH est livré dans Windows depuis 5 ans maintenant, donc c'est cool. Vous pouvez faire plein de choses !

  • Comment utiliser OpenSSH intégré à Windows 10 pour se connecter automatiquement en SSH à une machine Linux distante ?
  • Comment se connecter en SSH à une machine Windows 10 depuis Linux OU Windows OU n'importe où

Mais souvent, les gens veulent SSH pas dans leur machine Windows 10, mais plutôt dans WSL2 exécuté dans/derrière leur machine Windows 10. Alors que WSL2 peut transférer des ports de l'intérieur vers l'extérieur (par exemple, localhost:8000 dans une instance WSL2 mise à disposition à partir de la machine Windows 10 locale) si vous souhaitez créer un chemin vers un port WSL2 complètement à l'extérieur d'une machine, vous devrez besoin d'être beaucoup plus explicite.

Installer OpenSSH-Server dans WSL

Tout d'abord, installez le serveur OpenSSH dans votre distribution Linux :

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.

Choisissez votre numéro de port SSH

Ensuite, dans WSL2, modifiez /etc/ssh/sshd_config et décommentez la ligne Port.

Je l'ai édité avec sudo nano /etc/ssh/sshd_config , pas de honte !

SSH est généralement 22, mais j'aime utiliser quelque chose comme 2222 donc c'est moins évident mais toujours facile à retenir ET est différent du 22 de votre machine Windows. Notez que je lui ai dit d'écouter sur 0.0.0.0, donc, n'importe quel adaptateur. Vous pouvez également définir PasswordAuthentication sur "no" si vous souhaitez utiliser des clés SSH plutôt que des mots de passe pour l'authentification. Réglez-le sur "oui" si vous savez ce que vous faites et ne savez pas comment utiliser les clés ssh.

/etc/ssh/sshd_config

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

...STUFF BELOW THIS...

À partir de WSL2, obtenez votre adresse IP en utilisant "ifconfig". Le mien est 172.23.129.80, le vôtre sera probablement 172.SOMETHINGELSE et cela changera lorsque WSL2 démarrera à froid .

Vous voudrez peut-être vous assurer qu'il fonctionne, étant donné que WSL2 n'a pas de systemd.

service ssh start

Transférer les ports vers WSL2

Maintenant, à partir d'une invite Windows de l'administrateur - cela peut être cmd.exe ou powershell.exe, peu importe, utilisez le net shell "netsh" pour ajouter une règle portproxy. Encore une fois, remplacez connectaddress par VOTRE adresse IP WSL2, qui est une adresse interne à votre machine.

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

Ouvrez le pare-feu

Ensuite, à partir de la même invite Windows de l'administrateur, ouvrez un port de pare-feu entrant. Vous pouvez le faire à partir des paramètres avancés du pare-feu, mais encore plus facilement, vous pouvez à nouveau utiliser netsh !

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

Vous pouvez répertorier toutes vos règles portproxy comme ceci si vous êtes concerné :

netsh interface portproxy show v4tov4

Vous pouvez tous les supprimer si vous le souhaitez avec

netsh int portproxy reset all

Une solution scriptée ?

Daehahn, utilisateur de GitHub et membre de la communauté, travaille sur un script PowerShell pour automatiser ce processus. Le fil de commentaires commence ici et l'essentiel du script PowerShell pour wsl2-network.ps1 est ici. Il réinitialise le pare-feu et les proxys de port, trouve la nouvelle adresse IP de votre distribution par défaut et vous configure à nouveau. Enregistrez ce .ps1 quelque part, lisez-le et exécutez "unblock-file wsl2-network.ps1 " afin que vous puissiez configurer rapidement votre système pour Shushing dans votre instance WSL2 !

Notez la variable $Ports qui ouvre probablement plus que vous ne le souhaitez ou n'en avez besoin, en vous rappelant que WSL et VS Code transmettront automatiquement les ports à l'hôte local en cas de besoin pour le développement.

J'espère que cela t'aides! Ce serait bien si WSL2 ne changeait pas son adresse IP interne à chaque démarrage afin que cela soit encore plus simple et plus automatisé.

Pour conclure et résumer :

  • Ce billet de blog - celui que vous lisez actuellement, n'a que des ports de transfert Windows, utilise Linux OpenSSH de WSL2 et s'authentifie auprès de Linux. Windows n'est impliqué qu'en périphérie. L'adresse IP WSL2 change au redémarrage et vous devrez maintenir vos règles de proxy de port et vos règles de pare-feu avec le script écouté à la fin de ce message.
  • Cet autre article de blog - ici - utilise OpenSSH de Windows et s'authentifie auprès de Windows , puis exécute WSL2. WSL2 démarre, utilise bash et Windows gère le trafic TCP.

Comprenez ce que vous voulez et utilisez celui qui vous convient.

Autres liens intéressants :

  • Docker Desktop pour WSL 2 intègre encore plus Windows 10 et Linux
  • Débogage à distance d'une application .NET Core Linux dans WSL2 à partir de Visual Studio sous Windows
  • Des trucs et astuces WSL (sous-système Windows pour Linux) sympas que vous (ou moi) ne savions pas étaient possibles
  • Ruby on Rails sur Windows n'est pas seulement possible, c'est fabuleux en utilisant WSL2 et VS Code
  • Déplacez facilement les distributions WSL entre les machines Windows 10 grâce à l'importation et à l'exportation !
  • Quelle est la différence entre une console, un terminal et un shell ?

J'espère que cela t'aides! Aussi, n'hésitez pas à vous abonner à ma chaîne YouTube !

Parrain : Ne manquez jamais un bogue :envoyez des alertes à Slack ou par e-mail, et détectez les problèmes avant que vos clients ne le fassent, grâce à Seq 2020.1.


Linux
  1. Comment SSH sur Linux à partir d'Android

  2. Windows - Comment empêcher Windows d'écraser Grub lors de l'utilisation d'une machine à double démarrage ?

  3. Comment Ssh dans un répertoire spécifique ?

  4. Comment Scp Via Une Machine Intermédiaire ??

  5. Arrêter la machine Windows à partir du terminal Linux

Comment se connecter en SSH à un conteneur Docker

Comment se connecter en SSH à votre serveur Linux à partir de Windows

Comment me connecter à Linux VPS via SSH depuis Linux et Windows OS ?

LA FAÇON FACILE comment SSH dans Bash et WSL2 sur Windows 10 à partir d'une machine externe

Comment se connecter en SSH à une machine Windows 10 depuis Linux OU Windows OU n'importe où

Comment configurer un profil d'onglet dans Windows Terminal pour SSH automatiquement dans une machine Linux