wsl2 ubuntu ip 自动同步到windows端的vscode remote ssh(wsl2 ubuntu 静态ip 固定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地址了,还算比较方便。

方案概览

wsl2的bash开启时自动执行python脚本,将ubuntu中最新的ip写入vscode的remote ssh的config文件中。

每次打开一个bash,都会同步一次。

注意事项

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

2、每次打开一个wsl2中的ubuntu终端,都会自动同步一次。
3、将ubuntu终端设为windows开机默认打开。(必须主动打开ubuntu 终端,才会自动同步)

4、直接在wsl2的ubuntu访问、修改windows中的vscode remote ssh的config。windows的盘符都挂载在/mnt下。

需要解决如下几个问题。

1、需要在wsl2中ubuntu设置普通用户sudo时 免密登录。
比如 sudo service ssh start 时,不需要输入密码
2、wsl2中的ubuntu需要安装python3

sudo apt install python3

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

wsl2设置普通用户sudo时免密

由于wsl2脚本中使用sudo命令,如果需要输入密码的话,很不方便,所以需要先设置sudo 免密,

ubuntu普通用户设置sudo免密

设置ubuntu终端开启时自动运行wsl2同步ip脚本

  1. vim ~/.bashrc

  2. 在最下方加上
    python3 ~/.my_init_sh/WSL_IP_UBUNTU.py

  3. cd ~ && mkdir .my_init_sh

  4. cd .my_init_sh

  5. 在.my_init_sh目录下放置如下python脚本(WSL_IP_UBUNTU.py)

    注意: 如下脚本只需要修改config文件目录,详情看注释。

# WSL_IP_UBUNTU.py
import os
import re

# 请修改这行!仅仅需要修改这行!    改为您的config文件目录
config_file = "/mnt/c/Users/82383/.ssh/config"

### 如何在 WSL2 中配置并连接到 VSCode #### 配置 WSL2 VSCode 连接的详细过程 要实现通过 Visual Studio Code (VSCode) 连接到 Windows Subsystem for Linux 2 (WSL2),可以按照以下方式操作: 1. **安装 WSL2 及其发行版** 确保已成功安装 WSL2 并选择了合适的 Linux 发行版(如 Ubuntu)。可以通过 PowerShell 输入 `wsl --install` 来快速完成安装[^1]。 2. **安装适用于远程开发的 VSCode 扩展包** 在 VSCode 的扩展市场中搜索并安装名为 “Remote - WSL” 的官方插件。此插件允许直接访问管理 WSL 子系统中的文件与环境设置。 3. **启动 WSL 终端并与之交互** 安装完成后,在左下角的状态栏可以看到一个小图标,由大于号 (`>`) 小于号 (`<`) 构成。点击该按钮后会在菜单选项中找到“Connect to WSL”,选择此项即可触发一个新的窗口打开流程,专门用于展示基于所选 WSL 版本的工作区状态。 4. **验证连接是否正常工作** 成功建立链接之后,新的编辑器实例底部应该标明当前使用的操作系统为 WSL 下的具体分布版本名,比如:“WSL:Ubuntu”。这表明已经切换至 WSL 模式下的开发环境中运行了。 另外一种方法涉及 SSH 协议来构建更灵活的安全通道: - 使用固定IP 地址绑定 WSL 实例以便稳定通信。例如修改 `/etc/wsl.conf` 文件加入网络参数指定静态地址像这样:`address=192.168.60.2`[^2]。 - 创建对应的 ssh config 文件夹路径(`~/.ssh/`)以及内部包含适当条目的 configuration 文档,指明目标主机名称、用户名还有私钥位置等细节信息。 最终效果就是无论采用哪种途径都能让开发者高效利用各自优势开展跨平台项目协作或者单纯享受类原生体验的同时保持资源占用率较低水平。 ```bash # 示例:查看可用的 WSL 分发列表 wsl --list --verbose ``` ```json // 示例:SSH Config 设置片段 Host my-wsl-ubuntu HostName 192.168.60.2 User your-linux-user-name IdentityFile ~/.ssh/id_rsa_for_wsl ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值