环境信息
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终端开启时自动运行wsl2同步ip脚本
-
vim ~/.bashrc
-
在最下方加上
python3 ~/.my_init_sh/WSL_IP_UBUNTU.py -
cd ~ && mkdir .my_init_sh
-
cd .my_init_sh
-
在.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"