Genial entrada de blog, ¿eh? Buen título, ¿verdad?
NO SIGA LAS INSTRUCCIONES DE ESTA PUBLICACIÓN
hasta que haya leído el SEGUIMIENTO DE LA MANERA FÁCIL sobre cómo SSH en Bash y WSL2 en Windows 10 desde una máquina externa y haya tomado la decisión correcta para USTED.
OpenSSH se ha distribuido en Windows durante 5 años, así que está bien. ¡Puedes hacer muchas cosas!
- Cómo utilizar el OpenSSH integrado de Windows 10 para acceder automáticamente mediante SSH a una máquina Linux remota
- Cómo usar SSH en una máquina con Windows 10 desde Linux O Windows O en cualquier lugar
Pero a menudo la gente quiere usar SSH no en su máquina con Windows 10, sino en WSL2 ejecutándose dentro/detrás de su máquina con Windows 10. Si bien WSL2 puede reenviar puertos de adentro hacia afuera (por ejemplo, localhost:8000 dentro de una instancia de WSL2 disponible desde la máquina local con Windows 10), si desea crear una ruta a un puerto WSL2 completamente fuera de una máquina, deberá necesita ser mucho más explícito.
Instalar servidor OpenSSH en WSL
Primero, instale el servidor OpenSSH dentro de su distribución de 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.
Decide tu número de puerto SSH
A continuación, en WSL2, edite /etc/ssh/sshd_config y elimine los comentarios de la línea Puerto.
Lo edité con sudo nano /etc/ssh/sshd_config
, ¡no te avergüences!
SSH suele ser 22, pero me gusta usar algo como 2222, por lo que es menos obvio pero aún así fácil de recordar Y es diferente del 22 de la máquina de Windows. Tenga en cuenta que le dije que escuchara en 0.0.0.0, por lo tanto, cualquier adaptador. También puede establecer PasswordAuthentication en "no" si desea utilizar claves SSH en lugar de contraseñas para la autenticación. Establézcalo en "sí" si sabe lo que está haciendo y no sabe cómo usar las teclas ssh.
/etc/ssh/sshd_config
...STUFF ABOVE THIS...
Port 2222
#AddressFamily any
ListenAddress 0.0.0.0
#ListenAddress ::
...STUFF BELOW THIS...
Desde dentro de WSL2 obtenga su dirección IP usando "ifconfig". El mío es 172.23.129.80, el tuyo probablemente será 172.ALGO MÁS y cambiará cuando WSL2 arranque en frío .
Es posible que desee asegurarse de que se esté ejecutando, considerando que WSL2 no tiene systemd.
service ssh start
Reenviar puertos a WSL2
Ahora, desde un indicador de administrador de Windows - que puede ser cmd.exe o powershell.exe, no importa, use el shell de red "netsh" para agregar una regla portproxy. Nuevamente, cambie la dirección de conexión a SU dirección IP de WSL2, que es una dirección interna de su máquina.
netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=2222 connectaddress=172.23.129.80 connectport=2222
Abrir el cortafuegos
A continuación, desde el mismo indicador de administrador de Windows, abra un puerto de firewall entrante. Puede hacerlo desde la Configuración avanzada del cortafuegos, pero aún más fácil, ¡puede usar netsh nuevamente!
netsh advfirewall firewall add rule name=”Open Port 2222 for WSL2” dir=in action=allow protocol=TCP localport=2222
Puede enumerar todas sus reglas portproxy como esta si está preocupado:
netsh interface portproxy show v4tov4
Puedes eliminarlos todos si quieres con
netsh int portproxy reset all
¿Una solución con guión?
El usuario de GitHub y miembro de la comunidad, Daehahn, está trabajando en un script de PowerShell para automatizar este proceso. El hilo de comentarios comienza aquí y la esencia del script de PowerShell para wsl2-network.ps1 está aquí. Restablece el firewall y los portproxies, encuentra la nueva IP de su distribución predeterminada y lo configura nuevamente. Guarde este .ps1 en algún lugar, léalo y ejecute "unblock-file wsl2-network.ps1
" en él para que pueda configurar su sistema rápidamente para Shushing en su instancia de WSL2!
Tenga en cuenta la variable $Ports que probablemente abre más de lo que desea o necesita, recordando que WSL y VS Code reenviarán automáticamente los puertos a localhost cuando sea necesario para el desarrollo.
¡Espero que esto ayude! Sería bueno si WSL2 no cambiara su dirección IP interna cada vez que se inicia para que esto pudiera hacerse aún más fácil y automatizado.
Para concluir y resumir:
- Esta publicación de blog, la que está leyendo ahora, solo tiene puertos de reenvío de Windows y usa Linux OpenSSH de WSL2 y autentica contra Linux. Windows solo está involucrado de forma periférica. La dirección IP de WSL2 cambia al reiniciar y deberá mantener sus reglas de portproxy y firewall con el script escuchado al final de esa publicación.
- Esta otra publicación de blog, aquí, usa OpenSSH de Windows y se autentica con Windows y luego ejecuta WSL2. WSL2 se inicia, usa bash y Windows maneja el tráfico TCP.
Comprenda lo que quiere y use el adecuado para usted.
Otros enlaces interesantes:
- Docker Desktop para WSL 2 integra Windows 10 y Linux aún más cerca
- Depuración remota de una aplicación .NET Core Linux en WSL2 desde Visual Studio en Windows
- Sugerencias y trucos geniales de WSL (subsistema de Windows para Linux) que usted (o yo) no sabía que eran posibles
- Ruby on Rails en Windows no solo es posible, es fabuloso usar WSL2 y VS Code
- ¡Transfiera fácilmente distribuciones de WSL entre máquinas con Windows 10 con importación y exportación!
- ¿Cuál es la diferencia entre una consola, una terminal y un shell?
¡Espero que esto ayude! Además, ¡suscríbete a mi canal de YouTube!
Patrocinador: No te pierdas ni un error:envía alertas a Slack o por correo electrónico y encuentra problemas antes que tus clientes, usando Seq 2020.1.