¿Cómo hacer una conexión SecureCRT para conectarse a WSL2 sin tener que cambiar la IP cada vez?

¿Cómo hacer una conexión SecureCRT para conectarse a WSL2 sin tener que cambiar la IP cada vez?

¿Hay alguna manera de hacer que la IP de WSL2 sea estática? Leí sobre esto y me dijeron que no había manera de hacer que la IP fuera estática, entonces, ¿hay alguna manera de establecer una conexión SecureCRT a WSL2 sin tener que cambiar la dirección IP en las configuraciones para no tener que volver a ingresar? la ip cada vez?

Respuesta1

La solución para no rehacer todo nuevamente con una nueva dirección IP la encuentras en el post
Modo puente NIC WSL 2 #4150.

Desafortunadamente, la solución es sólo relegar el trabajo a un script que se ejecuta automáticamente después de cada inicio de sesión.

Descripción del problema:

La solución consiste en reenviar los puertos TCP de los servicios WSL 2 al sistema operativo host.
El adaptador virtual en la máquina WSL 2 cambia su dirección IP durante el reinicio, lo que dificulta la implementación de una solución de ejecución única.
También una nota al margen, el firewall de Windows bloqueará el puerto redirigido.

La solución es escribir un script de PowerShell que haga:

  • Obtener la dirección IP de la máquina WSL 2
  • Eliminar reglas de reenvío de puertos anteriores
  • Agregar reglas de reenvío de puertos
  • Eliminar reglas de firewall agregadas previamente
  • Agregar nuevas reglas de firewall

El script también elimina reglas de firewall no deseadas.
Aquí está el guión copiado de esa publicación:

$remoteport = bash.exe -c "ifconfig eth0 | grep 'inet '"
$found = $remoteport -match '\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}';

if( $found ){
  $remoteport = $matches[0];
} else{
  echo "The Script Exited, the ip address of WSL 2 cannot be found";
  exit;
}

#[Ports]

#All the ports you want to forward separated by coma
$ports=@(80,443,10000,3000,5000);


#[Static ip]
#You can change the addr to your ip config to listen to a specific address
$addr='0.0.0.0';
$ports_a = $ports -join ",";


#Remove Firewall Exception Rules
iex "Remove-NetFireWallRule -DisplayName 'WSL 2 Firewall Unlock' ";

#adding Exception Rules for inbound and outbound Rules
iex "New-NetFireWallRule -DisplayName 'WSL 2 Firewall Unlock' -Direction Outbound -LocalPort $ports_a -Action Allow -Protocol TCP";
iex "New-NetFireWallRule -DisplayName 'WSL 2 Firewall Unlock' -Direction Inbound -LocalPort $ports_a -Action Allow -Protocol TCP";

for( $i = 0; $i -lt $ports.length; $i++ ){
  $port = $ports[$i];
  iex "netsh interface portproxy delete v4tov4 listenport=$port listenaddress=$addr";
  iex "netsh interface portproxy add v4tov4 listenport=$port listenaddress=$addr connectport=$port connectaddress=$remoteport";
}

Debe programar el script para que se ejecute después de iniciar sesión, de la siguiente manera:

Vaya a buscar, busque el programador de tareas. En el menú de acciones de la derecha, haga clic en crear tarea.
Ingrese el nombre, vaya a la pestaña de activadores. Cree un nuevo activador, con una tarea de inicio al iniciar sesión, establezca el retraso en 10 segundos.
Vaya a las acciones y agregue el script. Si está utilizando una computadora portátil, vaya a configuración y habilite ejecutar con energía.

Respuesta2

Si solo necesita una sshconexión/protocolo para SecureCRT, que indicó en los comentarios, entonces existe una alternativa al reenvío de puertos:

  • Instale el servidor Windows OpenSSH (direccionesfuncionando en el puerto 22.
  • Configure su puerto WSL2 sshd en otra cosa (por ejemplo, 2222) en/etc/ssh/sshd_config
  • Utilice el host de Windows como jumphost, aprovechando localhostel reenvío de puertos de WSL2. Es decir ssh -o "ProxyCommand ssh -W %h:%p windowshost.local" -o "StrictHostKeyChecking=no -p 2222 localhost(sustituya "windowshost" por el nombre de su máquina).

Esto funciona porque, de forma predeterminada, Windows detectará los servicios que se ejecutan en instancias WSL2 y localhostles reenviará conexiones.

Esto supone, por supuesto, que SecureCRT pueda utilizar un ProxyCommand.

información relacionada