|
windows11镜像下载
https://www.microsoft.com/zh-cn/software-download/windows11/
windows11(适用于x64设备的多版本ISO)
简体中文
vmware17安装windows11 关键步骤 - 选自定义安装 - 先不选镜像
参考
https://blog.csdn.net/qianshuiliyu/article/details/132242854
|
|
|
|
|
|
|
|
- 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”源要求在使用前查看以下协议。 ``` |
|
|
|
|
|
|
|
|
|
|
|
|
|
查看某个命令的路径
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
```
|
|
|
|
|
|
|
|
|
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版,没有自动升级 - 检查是否开启了本地代理,关闭本地代理即可 - |
|
|
窗口字体
可以调整左侧以及标签的字体大小
|
|
|
|
|
|
|
|
https://www.bandicam.cn/ 网上说班迪长时间录制不断,稳定 一次可免费使用10分钟,并且带水印 |
Win + G 点一下空白处,浮动的窗口就会消失,不消失也不录制录屏窗口 |
|
|
|
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 ```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
```
无法将磁盘“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支持 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[应用程序
|
|
|
|
|
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
|
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 |
|
|
|
|
|
|
|
|