GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo SSH en WSL2 en Windows 10 desde una máquina externa

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.


Linux
  1. Cómo usar SSH en Linux desde Android

  2. Ssh:¿acceder al servidor Linux desde una máquina con Windows en modo gráfico a través de Ssh?

  3. Windows:¿cómo evitar que Windows sobrescriba Grub cuando se usa una máquina de arranque dual?

  4. ¿Cómo SSH en un directorio específico?

  5. ¿Cómo Scp a través de una máquina intermedia?

Cómo usar SSH en un contenedor Docker

Cómo SSH en su servidor Linux desde Windows

¿Cómo me conecto a Linux VPS a través de SSH desde Linux y Windows OS?

LA MANERA FÁCIL de cómo SSH en Bash y WSL2 en Windows 10 desde una máquina externa

Cómo SSH en una máquina con Windows 10 desde Linux O Windows O en cualquier lugar

Cómo configurar un perfil de pestaña en Windows Terminal para SSH automáticamente en una caja de Linux