WSL2 ubuntu ip 自动同步 、静态ip(解决wsl2 ip 每次开机ip会变化的问题)

本文介绍了一种通过Python脚本解决WSL2IP不固定以及SSH服务自动开启的方法。在Windows端设置开机启动的Python服务器接收WSL2发送的IP,并更新到VSCodeRemoteSSH的配置文件中,同时WSL2的Ubuntu启动时会自动开启SSH服务并发送IP。此外,还涉及设置Windows防火墙、WSL2普通用户sudo免密登录等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

找到了更简单的办法,详情wsl2 ubuntu ip 自动同步到windows端的vscode remote ssh(wsl2 ubuntu 静态ip 固定ip)

如下内容仍然可行,不过比较麻烦。
————————————————————————————————————————————————————————

利用python脚本解决wsl2 ip不固定的问题

环境信息

​ wsl2 中linux版本:ubuntu

​ windows版本: win10/win11

问题描述

最近装了wsl2,使用vscode远程连接wsl2时遇到了如下问题:
1、wsl2的ip无法固定
2、wsl2的ssh服务不能自动开启。

尝试了网上许多方法,都不能解决,于是决定自己写python脚本解决。

如下方案可以自动将wsl2的ip同步到vscode remote ssh的config文件中,同时自动开启wsl2中的ssh服务。

不算很完美的方案,但至少每次开机不用手动开启wsl2中ubuntu的ssh服务,不需要设置vscode中remote ssh的config文件中ip地址了,还算比较方便。

方案概览

在windows端开机启动一个socket服务器,等待接受wsl2端发来ip。接受到ip后,将ip存储到remote ssh的config中。

wsl2在启动bash时默认开启socket客户端,将自己的ip发往windows端。

注意事项

1、remote ssh 的config文件中wsl2远程连接的配置中的ip地址必须在第二行,且HostName前是四个空格。如下图所示

2、每次打开一个wsl2中的ubuntu终端,都会自动同步一次,前提是windows端的脚本得一直运行着,不要关闭了。

需要解决如下几个问题。

1、需要在wsl2中ubuntu设置普通用户sudo时 免密登录。比如 sudo service ssh start 时,不需要输入密码
2、wsl2端ping不通windows,需要关闭windows防火墙或者设置防火墙规则。
3、windows端python脚本需要开机启动。
4、windows端、wsl2中的ubuntu都需要安装python3

好吧,下面正式开始操作!

开机启动windows端服务器脚本

首先需要在C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup中增加一个bat脚本(wsl_ip.bat)

c:
cd C:\Users\82383\my_bat
python WSL_IP_windows.py

脚本解释:

  • c: 进入c盘

  • cd C:\Users\82383\my_bat 进入存放python脚本的目录,该目录可以自己选择,最好放在windows家目录中。

  • python WSL_IP_windows.py 运行windows端服务器脚本

注意 : 如下脚本仅仅需要修改config文件路径,详情请看注释!

# WSL_IP_windows.py

import socket               # 导入 socket 模块

# 如下设置为您的config文件路径即可,注意 \\ 转义字符。您只需要修改这里!
config_file = "C:\\Users\\82383\\.ssh\\config"

def get_ubuntu_ip():
    f = open(config_file,"r")
    lines = f.readlines()
    strip_line = lines[1].strip()
    split_list = strip_line.split()
    ubuntu_ip = split_list[1]
    print(ubuntu_ip)
    return ubuntu_ip, lines

def writefile(content):
 
### 安装 Ubuntu 并配置静态 IP #### 在 Windows 上安装 WSL2Ubuntu 为了在 WSL2 中运行带有静态 IPUbuntu,需先确保已启用 WSL2 功能并安装所需的 Linux 发行版。 Windows PowerShell 命令用于启动或更新 WSL 版本至 2: ```powershell wsl --set-default-version 2 ``` 接着通过 Microsoft Store 或命令行下载并安装 Ubuntu: ```powershell wsl --install -d Ubuntu ``` 这会自动完成最新版本的 Ubuntu 安装过程[^1]。 #### 配置静态 IP 地址 默认情况下,WSL 使用 DHCP 自动获取网络设置。要为 WSL 实例分配固定IP 地址,则需要修改 `/etc/wsl.conf` 文件来控制网络接口参数,并调整 Windows 主机上的虚拟交换机设置。 编辑 `C:\Users\<YourUsername>\.wslconfig` (如果不存在则创建),加入以下内容以指定子网地址范围内的固定 IP: ```ini [wsl2] kernelCommandLine="ipv6.disable=1" memory=4GB # 可选:定义内存大小 processors=2 # 可选:CPU核心数 localhostForwarding=true ``` 对于更精确地设定静态 IP,在 Ubuntu 终端内执行下列操作: 1. 创建或编辑 `/etc/netplan/01-netcfg.yaml` 文件: ```bash sudo nano /etc/netplan/01-netcfg.yaml ``` 2. 添加如下 YAML 格式的配置信息(替换为你想要使用的具体数值): ```yaml network: version: 2 ethernets: eth0: dhcp4: no addresses: - 192.168.x.y/24 # 替换成实际可用的IP地址和掩码长度 gateway4: 192.168.x.z # 默认网关地址 nameservers: addresses: [8.8.8.8, 8.8.4.4] # DNS服务器列表 ``` 3. 应用更改后的 Netplan 配置文件: ```bash netplan apply ``` 现在重启计算机使所有改动生效。之后可以通过 `ifconfig` 或者 `ip addr show` 来验证新的静态 IP 是否已经成功应用到 WSL2 环境中的 Ubuntu 实例上了[^2]。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值