找到了更简单的办法,详情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