镜像安装

windows11镜像下载

 

https://www.microsoft.com/zh-cn/software-download/windows11/

windows11(适用于x64设备的多版本ISO)

简体中文
    

vmware17安装windows11

 
关键步骤
- 选自定义安装
- 先不选镜像

 

参考
https://blog.csdn.net/qianshuiliyu/article/details/132242854
    

 

    

 


 

  

 


winget

 
- winget安装,如果已有则不用安装 
  - https://learn.microsoft.com/en-us/windows/package-manager/winget/#install-winget
  - Add-AppxPackage -RegisterByFamilyName -MainPackage Microsoft.DesktopAppInstaller_8wekyb3d8bbwe
```
PS C:\Windows\system32> Add-AppxPackage -RegisterByFamilyName -MainPackage Microsoft.DesktopAppInstaller_8wekyb3d8bbwe
PS C:\Windows\system32> winget
Windows 程序包管理器 v1.12.460
版权所有 (C) Microsoft Corporation。保留所有权利。

WinGet 命令行实用工具可从命令行安装应用程序和其他程序包。

使用情况: winget  [<命令>] [<选项>]

下列命令有效:
  install    安装给定的程序包
  show       显示包的相关信息
  source     管理程序包的来源
  search     查找并显示程序包的基本信息
  list       显示已安装的程序包
  upgrade    显示并执行可用升级
  uninstall  卸载给定的程序包
  hash       哈希安装程序的帮助程序
  validate   验证清单文件
  settings   打开设置或设置管理员设置
  features   显示实验性功能的状态
  export     导出已安装程序包的列表
  import     安装文件中的所有程序包
  pin        管理包钉
  configure  将系统配置为所需状态
  download   从给定的程序包下载安装程序
  repair     修复所选包
  dscv3      DSC v3 资源命令
  mcp        MCP 信息
```
```
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC>cd c:\

c:\>
c:\>
c:\>
c:\>winget install Cloudflare.WARP
“msstore”源要求在使用前查看以下协议。
```


 

    

 


 


 


 


 


 


cmd常用命令

查看某个命令的路径

PS K:\> where python
PS K:\> where.exe python
G:\tpf\aiwks\app\windows\py3109\python.exe
K:\app\py311\python.exe

PS K:\> where.exe pip
G:\tpf\aiwks\app\windows\py3109\Scripts\pip.exe
K:\app\py311\Scripts\pip.exe

打开服务选项

Win + R

在框中输入services.msc

目录

md dir_name  创建一个目录
md -p dir1/dir2/dir3  创建一串目录

rd 删除目录

进入目录

D:  或者 d:  //进入D盘,不区分大小写

windows系统目录不区分大小写,C盘下有C:\Windows
cd  C:/WINDOWS
这里有个正反斜杠的问题,在windows的cmd下,\与/效果一样,即
cd  C:/WINDOWS  等价于 cd  C:\WINDOWS

cd..          //跳转到上一层目录

文件

copy f1 f2
move f1 f2
del f1

查看目录下文件并按时间排序

注意,
这个方法仅适用于Developer Command Prompt for VS 2022这个命令行窗口
其他的可能不生效...可能在任务栏cmd上右键打开这个窗口,本操作时的环境为win11

dir /b /o:d

/b 参数表示以简洁的方式显示文件和文件夹的名称。
/o:d 参数表示按照日期排序。这里,
/o 参数表示排序,
:d 表示按照日期(降序)排序。
如果你想按照日期升序排序,可以改为 /o:-d。


其他命令

cls 清屏
ls  查看目录内容
dir 查看目录内容

环境变量

 
按 Win + S 调出搜索,输入 env

结果里直接点“编辑系统环境变量”或“编辑帐户的环境变量”即可打开经典对话框。
  
这个错误是因为命令提示符(cmd)找不到 `where.exe` 命令。问题在于系统的 PATH 环境变量没有包含 Windows 系统命令的路径。 ## 解决方法: ### 方法1:直接使用完整路径 ```cmd C:\Windows\System32\where.exe python ``` ### 方法2:先检查当前 PATH ```cmd echo %PATH% ``` 查看输出中是否包含 `C:\Windows\System32`,如果没有,需要添加。 ### 方法3:临时设置 PATH(仅当前窗口) ```cmd set PATH=%PATH%;C:\Windows\System32 where python ``` ### 方法4:使用其他命令替代 ```cmd # 使用 where 命令(不带.exe) where python # 或使用 dir 命令搜索 dir /s python.exe # 或使用系统变量 echo %PYTHON_HOME% ``` ### 方法5:永久修复 PATH 1. 打开"系统属性" → "高级" → "环境变量" 2. 在"系统变量"中找到 `Path` 3. 确保包含以下路径: - `%SystemRoot%\System32` - `%SystemRoot%` - `%SystemRoot%\System32\Wbem` 最常见的解决方法是直接使用 **`C:\Windows\System32\where.exe python`**。
%SystemRoot%不是一个文件夹路径,而是一个系统变量,它代表的是你的Windows系统安装目录 - 自带的,不需要设置,默认值是C:\Windows ``` D:\wks\chat\v1>echo %SystemRoot% C:\Windows ``` - 如果缺失 where.exe, 可能是因为 PATH 环境变量中没有包含 `%SystemRoot%\System32`,需要将其添加到 PATH 中。 - 需要进行以下设置: - 打开"系统属性" → "高级" → "环境变量" - 在"系统变量"中找到 `Path` - 确保包含以下路径: - `%SystemRoot%\System32` - `%SystemRoot%\System32\Wbem` - 没有则添加
- 通常系统命令在前: `%SystemRoot%\System32`在 PATH 的前面 - 但系统命令中还了一个python.exe,这导致它会覆盖自己需要的python.exe - 因此要将自己需要的python.exe所在路径放在前面,或者直接使用完整路径调用系统命令 ``` PS D:\wks> where.exe python D:\wks\chat\v1\.venv\Scripts\python.exe C:\Users\itoracle_17068343192\AppData\Local\Microsoft\WindowsApps\python.exe D:\app\py313\python.exe ```

 


 


 


 


vscode连接Linux

windows上先安装一个git, 然后命令行操作如下:
https://git-scm.com/downloads/win

ssh-keygen -t rsa

cd /c/Users/
cd Administrator/
cd .ssh/

将公钥上传到远程服务器的某用户下,比如xt,
如果远程服务器上没有.ssh目录,先上去执行一下 ssh-keygen -t rsa
scp id_rsa.pub xt@192.168.56.101:/home/xt/.ssh/

登录远程,进入用户下的.ssh目录
cat id_rsa.pub > authorized_keys

$ sudo su - root
# vim /etc/ssh/sshd_config
PubkeyAuthentication yes
AuthorizedKeysFile      .ssh/authorized_keys .ssh/authorized_keys2

测试一下是否可以,不可以时再重启一下远程服务器

ssh  xt@192.168.56.101

vscode配置密钥
Host 192.168.56.101
  HostName 192.168.56.101
  Port 26225
  User xt
  IdentityFile "C:\Users\Administrator\.ssh\id_rsa"

注意配置的是“id_rsa”文件,是密钥,
公钥是id_rsa.pub,其内容上传到远程服务器上去了

 

    

 
[root@ml etc]# cd
[root@ml ~]# ssh-keygen -t rsa
  
[root@ml ~]# cd .ssh/
[root@ml .ssh]# ls
id_rsa  id_rsa.pub

[root@ml .ssh]# cd /mnt/c/Users/itora/.ssh/

cat id_rsa.pub >> ~/.ssh/authorized_keys

 
ssh-keygen -t rsa
cd /mnt/c/Users/itora/.ssh/
cat id_rsa.pub >> ~/.ssh/authorized_keys
    

 
# vim /etc/ssh/sshd_config
PubkeyAuthentication yes
AuthorizedKeysFile   
  

 
[root@ml .ssh]#  service sshd restart

ssh -p 12251 root@172.26.114.122

Host aml-ml
  HostName 172.26.114.122
  Port 12251
  User root
  IdentityFile "C:\Users\itora\.ssh\id_rsa"
    

 
--------------------------------------------------------------------------------- 
    

在WSL中启动vscode

  
直接在项目所在目录输入
code .


  
如果遇到启动时要求更新,但更新又要求SSL认证,但因无证书...等原因无法启动的情况,比如:

Failed
--2025-04-04 08:42:55--  https://update.code.visualstudio.com/commit:ddc367ed5c8936efe395cffeec279b04ffd7db78/server-linux-x64/stable
Connecting to 127.0.0.1:7890... connected.
ERROR: cannot verify update.code.visualstudio.com's certificate, issued by ‘CN=Microsoft Azure RSA TLS Issuing CA 07,O=Microsoft Corporation,C=US’:
  Self-signed certificate encountered.
To connect to update.code.visualstudio.com insecurely, use `--no-check-certificate'.
ERROR: Failed to download https://update.code.visualstudio.com/commit:ddc367ed5c8936efe395cffeec279b04ffd7db78/server-linux-x64/stable to /home/xt/.vscode-server/bin/ddc367ed5c8936efe395cffeec279b04ffd7db78-1743727374.tar.gz
Please install missing certificates.
Debian/Ubuntu:  sudo apt-get install ca-certificates

 
可以执行下面的命令再启动 
sudo apt-get update
sudo apt-get install --reinstall ca-certificates
sudo update-ca-certificates --fresh
export SSL_CERT_DIR=/etc/ssl/certs

再次启动
code . 
    

# 其他方案,手动临时指定跳过证书验证
export VSCODE_SERVER_DOWNLOAD_VERIFY_SSL=false
code .

第二次遇到该错误,上面的方案无效,使用手动下载方案

 
$ code .
Updating VS Code Server to version cd4ee3b1c348a13bafd8f9ad8060705f6d4b9cba
Removing previous installation...
Installing VS Code Server for Linux x64 (cd4ee3b1c348a13bafd8f9ad8060705f6d4b9cba)
Downloading: 100%
Failed
--2025-09-01 14:44:29--  https://update.code.visualstudio.com/commit:cd4ee3b1c348a13bafd8f9ad8060705f6d4b9cba/server-linux-x64/stable
Resolving update.code.visualstudio.com (update.code.visualstudio.com)... 13.107.253.49, 2620:1ec:29:1::49
Connecting to update.code.visualstudio.com (update.code.visualstudio.com)|13.107.253.49|:443... failed: Connection refused.
Connecting to update.code.visualstudio.com (update.code.visualstudio.com)|2620:1ec:29:1::49|:443... failed: Network is unreachable.
ERROR: Failed to download https://update.code.visualstudio.com/commit:cd4ee3b1c348a13bafd8f9ad8060705f6d4b9cba/server-linux-x64/stable to /home/xt/.vscode-server/bin/cd4ee3b1c348a13bafd8f9ad8060705f6d4b9cba-1756709068.tar.gz

    

 
将下面这个链接复制到浏览器中 
https://update.code.visualstudio.com/commit:cd4ee3b1c348a13bafd8f9ad8060705f6d4b9cba/server-linux-x64/stable

下载得到文件 vscode-server-linux-x64.tar.gz

cd  ~/.vscode-server/bin
tar -xvf vscode-server-linux-x64.tar.gz 
mv vscode-server-linux-x64 cd4ee3b1c348a13bafd8f9ad8060705f6d4b9cba

即将下载的文件解压到指定的commit ID 目录 

再次启动 code . 

    

 

    

 
设置
Update:Mode
None 

---------------------------------------------------------------------

vscode ssh 连接远程服务器

 
Could not establish connection to "aml-online": Failed to download Vs Code Server
(Failed to fetch).

 
如果是已经连接成功,但突然连接不上了,且检查vscode版本仍为1.96版,没有自动升级 
- 检查是否开启了本地代理,关闭本地代理即可 
- 
  

 

  

 


vscode常用设置

窗口字体

 
可以调整左侧以及标签的字体大小 
    

 

    

 

    

 

    

 


 

  

 


录屏软件

https://www.bandicam.cn/

网上说班迪长时间录制不断,稳定

一次可免费使用10分钟,并且带水印

Win + G

点一下空白处,浮动的窗口就会消失,不消失也不录制录屏窗口




sublime

Preferences -> Settings 的右侧(User)面板

 
  "update_check": false,
  "show_update_in_status_bar": false
    

输入注册码/激活(最有效)

 
这是很多用户发现的“隐藏机制”。Sublime Text 在未激活(显示“Unregistered”)状态下,
有时会强制忽略你的 update_check 设置,强制弹窗提示你升级。

解决办法:去百度或谷歌搜索最新的 Sublime Text 4 注册码,点击菜单栏 Help -> Enter License 输入。激活后,更新弹窗通常会永久消失。

```
ZYNGA INC.
50 User License
EA7E-811825
927BA117 84C9300F 4A0CCBC4 34A56B44
985E4562 59F2B63B CCCFF92F 0E646B83
0FD6487D 1507AE29 9CC4F9F5 0A6F32E3
0343D868 C18E2CD5 27641A71 25475648
309705B3 E468DDC4 1B766A18 7952D28C
E627DDBA 960A2153 69A2D98A C87C0607
45DC6049 8C04EC29 D18DFA40 442C680B

1342224D 44D90641 33A3B9F2 46AADB8F

```

修改 Hosts 文件(终极手段)

 
- 找到系统 hosts 文件(Windows 路径通常为 
- C:\Windows\System32\drivers\etc\hosts,Mac/Linux 在 /etc/hosts)。
- 用管理员权限打开它(如用记事本右键“以管理员身份运行”打开)。
- 在文件末尾添加以下两行并保存:
  
```
127.0.0.1 www.sublimetext.com
127.0.0.1 version.sublimetext.com
```

 

    

 

    

 


 


 


 


 


 


WSL安装
``` 无法将磁盘“C:\Users\itora\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu24.04LTS_79rhkp1fndgsc\LocalState\ext4.vhdx”附加到 WSL2: 系统找不到指定的文件。 错误代码: Wsl/Service/CreateInstance/MountDisk/HCS/ERROR_FILE_NOT_FOUND Press any key to continue... ``` 这是一个常见的 WSL2 错误,表示系统无法找到虚拟磁盘文件 `ext4.vhdx`。以下是几种可能的解决方案: ## 1. 检查文件是否真的存在 首先确认文件路径是否正确: ```powershell # 在 PowerShell 中运行 Test-Path "C:\Users\itora\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu24.04LTS_79rhkp1fndgsc\LocalState\ext4.vhdx" ``` 如果返回 `False`,说明文件确实不存在。 ## 2. 常见原因及解决方案 ### A. 文件被误删或移动 检查回收站或是否被安全软件删除。如果文件丢失且没有备份,可能需要重新安装 Ubuntu。 ### B. 重新注册 WSL 发行版 ```powershell # 1. 先注销(删除)损坏的发行版(注意:这会删除所有数据!) wsl --unregister Ubuntu-24.04 # 2. 从 Microsoft Store 重新安装 Ubuntu 24.04 LTS # 或从命令行安装: wsl --install -d Ubuntu-24.04 ``` ### C. 检查 WSL 状态并重启 ```powershell # 关闭 WSL wsl --shutdown # 检查状态 wsl --list --verbose # 尝试重启 LxssManager 服务(管理员权限 PowerShell) Restart-Service LxssManager ``` ---

 


 


 


 


WSL

开启WSL支持

win11打开控制面板
系统 -- 搜索 控制面板  -- 搜索 启用或关闭windows功能
勾选 适用于Linux的Windows子系统
重启电脑

没有WSL要先安装
https://blog.csdn.net/gbz2000/article/details/127328968

重要是是WSL2,WSL的第2个版本,这个版本才支持完整的linux内核,否则linux功能不全
比如,无法启动docker

wsl --list --verbose

wsl --set-default-version 2


确定wsl版本为2之后,就可以去安装桌面版docker,或者在WSL中命令行安装也可以

根目录是C盘

安装
在Microsoft store中搜索Ubuntu即可安装

windows的子系统ubantu的根目录是C盘,
windows的C盘空间通常不足,所以尽量不要用这个根目录

root@DESKTOP-R39SP5K:/mnt/w/v# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sdc        251G   31G  208G  13% /

Used 31G就是Ubantu这个子系统用了C盘31G空间,Size大小251G这个不用管它,
Avail更是不准,因为C盘本身还有一堆系统文件呢,它不管,它只算自己占了多少
实际上这个31G也不精确,实际用的空间要比31G大上十几G

systemctl权限问题

System has not been booted with systemd as init system (PID 1). Can't operate.

wsl升级,指ubantu系统的升级
wsl --update
wsl -l -v
wsl --list --verbose

PS C:\Users\Administrator> wsl -l -v
NAME              STATE           VERSION
- Ubuntu-20.04      Running         2

如果*号不在Ubantu的前面就执行下面的内容
wsl --set-version Ubuntu-20.04 2

进入WSL,执行
apt install daemonize fontconfig


在 /etc/profile 文件末尾加入下述代码
SYSTEMD_PID=$(ps -ef | grep '/lib/systemd/systemd --system-unit=basic.target$' | grep -v unshare | awk '{print $2}')
if [ -z "$SYSTEMD_PID" ]; then
    sudo /usr/bin/daemonize /usr/bin/unshare --fork --pid --mount-proc /lib/systemd/systemd --system-unit=basic.target
    SYSTEMD_PID=$(ps -ef | grep '/lib/systemd/systemd --system-unit=basic.target$' | grep -v unshare | awk '{print $2}')
fi
if [ -n "$SYSTEMD_PID" ] && [ "$SYSTEMD_PID" != "1" ]; then
    exec sudo /usr/bin/nsenter -t $SYSTEMD_PID -a su - $LOGNAME
fi


/etc/sudoers 文件末尾加入下述代码
%sudo ALL=(ALL) NOPASSWD: /usr/sbin/daemonize /usr/bin/unshare --fork --pid --mount-proc /lib/systemd/systemd --system-unit=basic.target
%sudo ALL=(ALL) NOPASSWD: /usr/bin/nsenter -t [0-9]* -a su - [a-zA-Z0-9]*


执行下面命令使之生效
sudo -s
source /etc/profile

退出当前终端,再次进入,就可以使用systemctl了

vscode无法通过wsl连接的问题

ubantu子系统已安装好,通过cmd命令行可以进入并使用
vscode已安装好WSL插件
但就是连接不上ubantu系统

这个情况发生在我的笔记本上,研究了1个多小时,试了好几个解决办法,没搞定
然后在台式机上尝试,一次就连接成功了,并没有进行什么额外操作

ubantu子系统的存储位置

C:\Users\AS\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu22.04LTS_79rhkp1fndgsc\LocalState

C:\Users\83933\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu24.04LTS_79rhkp1fndgsc\LocalState

位于用户下的AppData\Local\Packages
查找包含Ubuntu22的选项,找到一个ext4.vhdx的文件,这个文件占了我C盘51G空间
并且,这个文件不会因为卸载了ubantu子系统就自动删除,

实在是C盘空间紧张,就找到了它,windows官方不建议删除AppData\Local\Packages
但了ubantu子系统都卸载了,还怕个啥,直接删除CanonicalGroupLimited.Ubuntu22.04LTS_79rhkp1fndgsc目录
再清空一下回收站,看到C盘多出来50G空间,感觉这电脑又可以坚持很长一段时间了

这个系统并不完全等价于ubantu,而是一个介于ubantu与windows之间的系统,简易地借用一些linux系统的功能是够用的
我在里面安装一个docker,占了一些空间,然后删除docker后,WSL并没有把空间还给我,
所以不要轻易使用这里面的空间,除非你C盘空间足够大



本机访问

docker run -itd --privileged --name kl -h kl --net=host -v /tmp:/tmp  cent7  bash
这种方式创建的docker,主要指网络模式为host,共享主机网络
其docker内的服务,本机电脑不一定能访问
- 本人台式机就可以
- 本人笔记本不可以

针对笔记本不可以的情况,做以下处理


docker network rm  mydk
docker network create --subnet=192.168.73.0/24 mydk

docker run -itd --name kk -h kk --net mydk --ip 192.168.73.11 -p 13301:13301 -p 9200:9200 -p 33033:33033 -p 33000:8000 -p 33088:8888 -p 33008:8008  -p 33007:8007 -p 33006:8006 -p 33005:8005  -p 33004:8004 -p 33003:8003 -p 33002:8002 -p 33001:8001 -v /mnt:/mnt -v /media:/media -v /tmp:/tmp cent7 bash
docker exec -it kk bash


yum install -y net-tools libaio numactl
yum -y install gcc gcc-c++ autoconf make
yum install openssl-devel bzip2-devel

外部访问

让外界访问wsl中运行的docker镜像服务
https://blog.csdn.net/huweijian5/article/details/107869516
netsh interface portproxy add v4tov4 listenaddress=你的本机ip地址 listenport=8081 connectaddress=WSL中的地址 connectport=8081


C:\Users\83933\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu20.04LTS_79rhkp1fndgsc\LocalState

C:\Users\itora\AppData\Local\Packages

C:\Users\itora\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu20.04LTS_79rhkp1fndgsc\LocalState


AppData\Local\Packages\CanonicalGroupLimited.Ubuntu20.04LTS_79rhkp1fndgsc\LocalState
有时候可能是因为某些程序还在使用这个目录下的数据盘,导致卸载ubantu但没有删除该盘,
可以重启系统后卸载ubantu,或者手工删除该文件









官方示例

在WSL中启动vscode

  
直接在项目所在目录输入
code .


  
如果遇到启动时要求更新,但更新又要求SSL认证,但因无证书...等原因无法启动的情况,比如:

Failed
--2025-04-04 08:42:55--  https://update.code.visualstudio.com/commit:ddc367ed5c8936efe395cffeec279b04ffd7db78/server-linux-x64/stable
Connecting to 127.0.0.1:7890... connected.
ERROR: cannot verify update.code.visualstudio.com's certificate, issued by ‘CN=Microsoft Azure RSA TLS Issuing CA 07,O=Microsoft Corporation,C=US’:
  Self-signed certificate encountered.
To connect to update.code.visualstudio.com insecurely, use `--no-check-certificate'.
ERROR: Failed to download https://update.code.visualstudio.com/commit:ddc367ed5c8936efe395cffeec279b04ffd7db78/server-linux-x64/stable to /home/xt/.vscode-server/bin/ddc367ed5c8936efe395cffeec279b04ffd7db78-1743727374.tar.gz
Please install missing certificates.
Debian/Ubuntu:  sudo apt-get install ca-certificates

可以执行下面的命令再启动 
sudo apt-get update
sudo apt-get install --reinstall ca-certificates
sudo update-ca-certificates --fresh
export SSL_CERT_DIR=/etc/ssl/certs

再次启动
code . 


# 其他方案,手动临时指定跳过证书验证
export VSCODE_SERVER_DOWNLOAD_VERIFY_SSL=false
code .

  
wsl.exe --install

C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC>wsl.exe --list
适用于 Linux 的 Windows 子系统分发:
Ubuntu-22.04 (默认值)

C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC>wsl -l -v
NAME            STATE           VERSION
* Ubuntu-22.04    Stopped         1


C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC>wsl --set-version Ubuntu-22.04 2
有关与 WSL 2 关键区别的信息,请访问 https://aka.ms/wsl2

正在进行转换,这可能需要几分钟时间。






root@qisan:~# vim /etc/ssh/sshd_config
PasswordAuthentication yes
PermitRootLogin yes

sudo service ssh restart
# 如果使用systemd(如Ubuntu 20.04+):
# sudo systemctl restart ssh

ssh -N -L 172.26.114.122:9030:192.168.73.11:9030 localhost


我使用了WSL net模式IP为172.26.114.122,内面有独立网络IP为192.168.73.11,
但我想在windows环境中访问这个192.168.73.11docker的9030端口,
可以在WSL设置一个ssh的端口转发吗?

根据你提供的IP信息,我来更新操作步骤。核心问题是**WSL2的NAT网络(`172.26.114.122`)与你的Windows主机局域网(`192.168.0.43`)是隔离的**,因此Windows无法直接访问`172.26.114.122`。

解决思路是通过 **“两次转发”**,下面是更新后的完整方案:

### 📍 更新后的网络拓扑与解决路径
下面的流程图清晰展示了数据从Windows主机最终到达Docker容器的完整路径,以及你需要建立的两级转发:

```mermaid
flowchart LR
    subgraph A [Windows 主机]
        A1[应用程序
连接 localhost:9030] end subgraph B [WSL2 子系统] B1[WSL2 内部
172.26.114.122] B2[SSH 隧道
端口转发] B3[Docker 网关
172.17.0.1] end subgraph C [Docker 网络] C1[目标容器
192.168.73.11:9030] end A1 -- 第1步:主机转发 -- B1 B1 -- 第2步:SSH隧道转发 -- B3 B3 -- 第3步:容器路由 -- C1 ``` 为了打通这条路径,你需要依次执行以下两个核心步骤: ### 🔧 第一步:在WSL2中建立SSH隧道(转发到Docker) 在 **WSL2的终端** 里执行以下命令,将WSL2本地的9030端口转发到Docker容器: ```bash ssh -N -L 172.26.114.122:9030:192.168.73.11:9030 localhost ``` **命令变化说明**: 这次我们显式指定了绑定到WSL2的特定IP(`172.26.114.122`),而不是所有网卡(`0.0.0.0`),更精确。 **执行后请保持这个终端窗口开启**。 ### 🌉 第二步:在Windows中设置端口转发(打通到WSL2) 现在,你需要在**Windows PowerShell(以管理员身份运行)** 中,执行以下命令,将Windows主机的9030端口流量转发到WSL2: ```bash netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=9030 connectaddress=172.26.114.122 connectport=9030 ``` **命令解释**: * `listenaddress=0.0.0.0`:监听Windows主机**所有网卡**(包括局域网`192.168.0.43`)的9030端口。 * `connectaddress=172.26.114.122`:将接收到的流量转发到WSL2的IP。 ### 🖥️ 第三步:连接与验证 完成以上两步后,你可以在**Windows主机**或**同一局域网内的其他机器**上,使用以下配置连接Doris: * **主机/Host**: `192.168.0.43` (你的Windows主机IP) 或 `localhost` (如果在Windows本机连接) * **端口/Port**: `9030` * **用户名/Username**: `root` **验证命令**(在Windows命令提示符或PowerShell中): ```bash telnet 192.168.0.43 9030 ``` 如果端口转发成功,你会看到类似`Connected to 192.168.0.43...`或MySQL协议相关的提示。 ### ⚠️ 关键注意事项 1. **防火墙**:确保Windows防火墙允许`9030`端口的入站连接。 * 打开“Windows Defender 防火墙”。 * 点击“高级设置” -> “入站规则” -> “新建规则”。 * 选择“端口” -> “TCP/9030” -> “允许连接”即可。 2. **命令持久化**: * WSL2中的SSH隧道在终端关闭后会消失。如需长期运行,可使用`autossh`工具或配置为系统服务。 * Windows的`netsh`端口转发在重启后**会失效**。如需开机自启,可将命令保存为`.bat`脚本,并放入“启动”文件夹。 3. **备用方案(更简洁)**:如果你只在Windows本机使用,可以**将第二步的 `listenaddress` 改为 `127.0.0.1`**。这样,只能从Windows本机通过`localhost:9030`访问,更安全,也无需配置防火墙。 按照这个“两步走”的转发策略,你的网络访问问题应该就能解决了。如果配置后连接失败,可以检查一下两个转发步骤是否都已正确执行并保持运行。







WSL设置

 
Windows Subsystem for Linux(WSL)目前支持四种网络模式,其核心特征及配置方式如下:

一、网络模式分类及特性
None 模式
完全隔离网络环境,WSL 实例无法访问外部网络,外部也无法访问 WSL 实例。适用于网络安全隔离测试场景。

NAT 模式(默认)
通过主机网络地址转换实现外网访问,WSL 实例使用独立 IP 地址(通常为 172.x.x.x 网段)。
主机可直接访问 WSL,但外部网络默认无法直接访问 WSL 实例。
此模式需启用 "自动代理" 选项以同步 Windows 系统代理设置,但存在localhost代理镜像限制。

Mirrored 模式
镜像主机的完整网络配置,WSL 实例与主机共享 IP 地址和网络接口。
支持 IPv6、多播及 VPN 兼容,允许局域网设备直接访问 WSL 实例。
该模式自动继承 Windows 的代理设置,推荐需要双向网络通信的开发场景使用。

VirtioProxy 模式
基于 Virtio 虚拟网络设备的高性能代理模式,提供优化的网络吞吐量和更强的隔离性。
适用于对网络延迟敏感或需要严格安全隔离的生产环境。

  

 

    

 
配置文件设置
在C:\Users\username\.wslconfig中添加:
[experimental]
networkingMode=mirrored  # 可选值:none/nat/mirrored/virtioProxy
autoProxy=true          # 启用代理同步

xt@xuetu:~$ cd /mnt/c/Users/itora/
xt@xuetu:/mnt/c/Users/itora$ vim .wslconfig
[experimental]
networkingMode=mirrored  
autoProxy=true  
hostAddressLoopback=true       

需执行wsl --shutdown后重启 WSL 实例生效。
wsl --shutdown

hostAddressLoopback=true  表示可以外网访问WSL上的服务,不再限于localhost

版本要求

 

镜像模式需 Windows 11 23H2(Build 22621.2359+)及 WSL 2.0.4 + 版本,
可通过wsl --version验证版本,
使用wsl --update获取最新组件。

代理配置建议

 
在 NAT 模式下若需使用系统代理,需同时启用 "自动代理" 选项。
建议优先选择 Mirrored 模式实现无缝代理同步,
该模式下 WSL 会自动映射 Windows 的 HTTP_PROXY 和 HTTPS_PROXY 环境变量,
无需额外配置即可继承宿主机的代理设置。

    
外网访问
2. 检查防火墙设置
确保 Windows 防火墙允许外部访问端口 33033。
打开防火墙高级设置:
按 Win + R,输入 wf.msc,回车。
在左侧选择 入站规则,点击右侧 新建规则。
选择 端口,点击 下一步。
输入 33033,选择 TCP,点击 下一步。
选择 允许连接,点击 下一步。
根据需要选择应用范围(如 域、专用、公用),点击 下一步。
为规则命名(如 Allow WSL 33033),点击 完成。

转发规则
netsh interface portproxy add v4tov4 listenport=33033 listenaddress=0.0.0.0 connectport=33033 connectaddress=127.0.0.1
netsh interface portproxy show all
删除规则
netsh interface portproxy delete v4tov4 listenport=33033 listenaddress=0.0.0.0

 
root@xuetu:/# du -sh wks/
57G     wks/

root@xuetu:/# tar -zcvf wks_wsl.tar.gz /wks/

xt@xuetu:~$ ./dps.sh
CONTAINER ID   IMAGE     NAMES     COMMAND   STATUS
fc59b8317e80   aml:1.5   ml        "bash"    Exited (255) 10 days ago
f8f8032ccd3f   xt:1.1    uu        "bash"    Up 23 minutes

xt@xuetu:~$ sudo docker images
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
xt           1.1       30831d548c2a   12 days ago    13.4GB
aml          1.5       921082d9c13d   12 days ago    38.9GB
ubuntu       24.04     a04dc4851cbc   2 months ago   78.1MB

docker commit -m "reinstall" -a "73biji" f8f8032ccd3f xt:1.2 

root@xuetu:~# docker images
REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
xt           1.2       71f28b9d41d1   13 seconds ago   76.3GB
xt           1.1       30831d548c2a   12 days ago      13.4GB
aml          1.5       921082d9c13d   12 days ago      38.9GB
ubuntu       24.04     a04dc4851cbc   2 months ago     78.1MB

docker run -itd --privileged --name ii -h ii  --gpus all --net host -v /wks:/wks -v /data:/data  -v /opt:/opt  -v /media:/media -v /mnt:/mnt -e NVIDIA_DRIVER_CAPABILITIES=compute,utility -e NVIDIA_VISIBLE_DEVICES=all xt:1.2  bash

xt@xuetu:~$ ./dps.sh
CONTAINER ID   IMAGE     NAMES     COMMAND   STATUS
c4d472811a2f   xt:1.2    ii        "bash"    Up 15 seconds
fc59b8317e80   aml:1.5   ml        "bash"    Exited (255) 10 days ago
f8f8032ccd3f   xt:1.1    uu        "bash"    Up 53 minutes

docker exec -it ii bash
  

 
docker以host的方式启动,http服务以localhost为地址

root@ii:/opt/wks/web73# ./web73 -addr=localhost:33033
addr:localhost:33033,upload dir:/tmp
    
外部访问
http://localhost:33033/

 


 
docker以host的方式与主机共享了IP,那么SSH就需要修改端口
root@ii:/# vim /etc/ssh/sshd_config
#Port 22
Port 22002
PermitRootLogin prohibit-password
PasswordAuthentication yes
  

执行以下命令启动并设置开机自启:
service ssh start
systemctl enable ssh


root@ii:/# netstat -tunlp|grep 22002
tcp        0      0 0.0.0.0:22002           0.0.0.0:*               LISTEN      114/sshd: /usr/sbin
tcp6       0      0 :::22002                :::*                    LISTEN      114/sshd: /usr/sbin

ssh -p 22022 py1@localhost 
- 这里一开始并没有连接成功 
- 在尝试在WSL上也修改SSH端口为22003后,此连接才成功
- 不过,在WSL上查看22003端口却发现不存在

 


 


简易设置-镜像方式

 
WSL配置
xt@xuetu:/mnt/c/Users/itora$ cat .wslconfig
[experimental]
networkingMode=mirrored
autoProxy=true
hostAddressLoopback=true

windows入站规则配置
控制面板 -- Windows Defender 防火墙 -- 高级设置 -- 入站规则 -- 
新建规则 -- 端口 -- TCP -- 所有本地端口/特定本地端口(输入具体的端口) -- 允许连接 -- 
勾选,域,专用,公用  -- 名称:输入名字 -- 完成 


详细设置

 

 
在 WSL 的 **Mirrored 模式(--networking=mirrored)** 下,WSL 的网络栈会被完全虚拟化,并直接映射到 Windows 的主机网络栈上。这意味着 WSL 内的端口应该可以直接通过主机的 IP 访问,但有时仍然需要额外的防火墙或路由配置。  

### **问题分析**
- **`localhost:33033` 可以访问** → 说明 WSL 的服务正常运行。
- **`192.168.1.2:33033` 无法访问** → 可能是 **Windows 防火墙** 阻止了外部访问,或者 WSL 的 Mirrored 模式没有正确暴露端口。

---

## **解决方案**
### **1. 检查 WSL 网络模式**
运行以下命令确认 WSL 是否处于 Mirrored 模式:
```bash
wsl --system
cat /proc/sys/net/ipv4/conf/all/forwarding
```
如果返回 `1`,说明 Mirrored 模式已启用。

---

### **2. 检查 Windows 防火墙**
Windows 防火墙可能会阻止外部访问 WSL 暴露的端口。  
#### **(方法1)临时关闭防火墙(测试用)**
```powershell
netsh advfirewall set allprofiles state off
```
测试后重新启用:
```powershell
netsh advfirewall set allprofiles state on
```

#### **(方法2)手动添加防火墙规则**
允许 `33033` 端口的入站连接:
```powershell
New-NetFirewallRule -DisplayName "Allow WSL Port 33033" -Direction Inbound -LocalPort 33033 -Protocol TCP -Action Allow
```

---

### **3. 检查 WSL 是否监听所有接口**
在 WSL 中运行:
```bash
sudo netstat -tulnp | grep 33033
```
如果输出类似:
```
tcp    0    0 0.0.0.0:33033    0.0.0.0:*    LISTEN    /
```
说明服务已监听所有接口(`0.0.0.0`)。  
如果只显示 `127.0.0.1:33033`,则需要修改服务配置,使其监听 `0.0.0.0`。

---

### **4. 检查 Windows 端口转发(可选)**
如果 Mirrored 模式仍然无法直接暴露端口,可以手动设置 Windows 端口转发:
```powershell
netsh interface portproxy add v4tov4 listenport=33033 listenaddress=0.0.0.0 connectport=33033 connectaddress=127.0.0.1
```
查看当前转发规则:
```powershell
netsh interface portproxy show all
```
删除规则(如果需要):
```powershell
netsh interface portproxy delete v4tov4 listenport=33033 listenaddress=0.0.0.0
```

---

### **5. 测试外部访问**
让同局域网的另一台设备访问:
```bash
curl http://192.168.1.2:33033
```
或直接在浏览器输入 `http://192.168.1.2:33033`。

---

## **总结**
| 步骤 | 操作 | 检查点 |
|------|------|--------|
| 1 | 确认 WSL 处于 Mirrored 模式 | `wsl --system` |
| 2 | 检查 Windows 防火墙是否放行 | `New-NetFirewallRule` |
| 3 | 确认 WSL 服务监听 `0.0.0.0` | `netstat -tulnp` |
| 4 | (可选)设置 Windows 端口转发 | `netsh interface portproxy` |
| 5 | 测试外部访问 | `curl http://192.168.1.2:33033` |

如果仍然无法访问,可能是路由器阻止了 LAN 访问,或者 Windows 网络配置问题(如 **NAT 模式未正确映射**)。可以尝试重启 WSL:
```powershell
wsl --shutdown
wsl
```
然后重新测试。

    

 

    

 
export winip="192.168.0.43"
export http_proxy="http://$winip:7890"
export https_proxy="http://$winip:7890"
curl -I https://google.com

 


 


 


远程连接

sudo apt-get install xrdp

黑屏或闪退
sudo vi /etc/xrdp/startwm.sh
unset DBUS_SESSION_BUS_ADDRESS
unset XDG_RUNTIME_DIR

sudo systemctl restart xrdp.service

远程连接的用户
vi ~/.xsessionrc
export GNOME_SHELL_SESSION_MODE=ubuntu
export XDG_CURRENT_DESKTOP=ubuntu:GNOME
export XDG_CONFIG_DIRS=/etc/xdg/xdg-ubuntu:/etc/xdg

sudo systemctl restart xrdp.service










参考