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.