Esta es una publicación de blog interesante sobre cómo SSH en WSL2 en Windows 10 desde una máquina externa. Léalo. Sepa cómo funciona. Aprenderlo. Y NO LO HAGAS PORQUE ES DEMASIADO COMPLEJO .
NO HAGAS ESTO. Está bien. Funciona. Pero es barroco. Está reenviando puertos a una pequeña subred local con VM, está lidiando con el cambio de direcciones IP de WSL2, tendrá que mantener su VM en funcionamiento y, en general, está tratando de patinar sobre hielo cuesta arriba.
Aquí está la cosa. En esa publicación, lo que no debe hacer, está desactivando el Firewall de Windows para su puerto, reenviando a una subred interna y luego permitiendo que WSL se haga cargo.
Entonces, ¿por qué no cambiar el shell predeterminado de Windows para SSH a Bash de WSL2?
¿Cómo se configura SSH en WSL2 en su máquina con Windows 10?
Primero, abra un indicador de administrador de PowerShell (menú Inicio, escriba PowerShell, mantenga presionadas las teclas ctrl+shift y presione enter) escriba esto:
> Get-WindowsCapability -Online | ? Name -like 'OpenSSH*'
Name : OpenSSH.Client~~~~0.0.1.0
State : Installed
Name : OpenSSH.Server~~~~0.0.1.0
State : NotPresent
¿Ves como tengo el Cliente y no el Servidor OpenSSH? Agrégalo:
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
Ahora inicie el servicio SSHD o configúrelo para que se inicie automáticamente:
Start-Service sshd
Get-Service sshd
o automático:
Set-Service -Name sshd -StartupType 'Automatic'
Configurar el shell predeterminado para OpenSSH en Windows 10
En mi servidor (la máquina de Windows en la que estoy usando SSH) configuraré una clave de registro para establecer el shell predeterminado. En este caso, usaré PowerShell Core multiplataforma de código abierto. Puedes usar lo que te haga feliz y la fiesta de WSL2 me hace feliz.
New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\WINDOWS\System32\bash.exe" -PropertyType String -Force
Tenga en cuenta que bash.exe en este contexto se inicia "wsl -d YOURDEFAULTDISTRO
" por lo que querrá saber cuál es su valor predeterminado y, si no le gusta, cámbielo con wsl --set-default DISTRO
.
ADVERTENCIA:necesita la RUTA COMPLETA Y CORRECTA en ese comando anterior. Funciona para cualquier caparazón. Como uso bash.exe, WSL2 se inicia de forma gratuita, pero SSH con esta solución usa las claves SSH de Windows y la autenticación de Windows. ¡Tenga en cuenta que cuando ingrese su contraseña para la autenticación!
Incluso mejor si quisiera agregar un elemento de menú (perfil) a una terminal de Windows local con una entrada para ingresar a mi WSL en mi máquina remota de Windows que me registraría automáticamente desde otro lugar usando claves públicas, ¡también podría hacerlo!
Para concluir y resumir:
- Esta publicación de blog:la que está leyendo 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.
- Esta otra publicación de blog, por aquí, tiene puertos de reenvío de Windows únicamente, y usa Linux OpenSSH de WSL2 y se autentica contra Linux. Windows solo está involucrado de manera 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.
Comprenda lo que quiere y use el adecuado para usted.
¡Disfrutar!
Patrocinador: ¿Error en producción? Llegue al fondo del asunto rápidamente con la búsqueda de registros de producción en vivo en Seq 2020.1.