远程wsl2服务器配置

背景

一台Windows电脑,开启WSL2服务,其他电脑通过远程访问WSL。
(本文除了一些基本配置外,还有一些方便使用的可选配置)

安装wsl

在windows命令行中运行

wsl --install -d ubuntu

然后设置ubuntu的名称/密码

设置wsl不加载windows的环境变量PATH(可选)

默认情况下wsl会加载windows的环境变量,会导致一些命令重突。

  1. 设置wsl的配置
    在wsl中运行
    sudo nano /etc/wsl.conf
    
    添加如下内容
    [interop]
    appendWindowsPath = false
    
  2. 重启wsl
    在window下运行如下
    wsl --shutdown
    wsl
    

设置wsl启动方式为systemd(可选)

Windows WSL 默认使用很老的init启动方法,我们换成新的systemd。

  1. 设置wsl的配置
    在wsl中运行
    sudo nano /etc/wsl.conf
    
    添加如下内容
    [boot]
    systemd=true
    
  2. 重启wsl
    在window下运行如下
    wsl --shutdown
    wsl
    

wsl安装ifconfig(可选)

  1. 在wsl中运行
    sudo apt install net-tools
    

固定windows虚拟网卡

wsl与windows之间通过虚拟网卡实现网络连接。
每次wsl启动时会检测windows虚拟网卡是否开启,如果没有开启,则随机创建一个,由于IP是不固定的,会影响后续使用。
我们以固定地址192.168.50.1为例。
在Windows下:
1. 首先判断windows有没有安装powershell Hyper-V模块
bash Get-Module -Name Hyper-V
2. 如果没有输出,则需要安装
3. 首先启用Hyper-V
在这里插入图片描述
4. 安装powershell模块
bash Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-Management-PowerShell

5. 创建一个powershell脚本文件如下
bash wsl # 第一步启动wsl,创建虚拟适配器 powershell -c "Get-NetAdapter 'vEthernet (WSL)' | Get-NetIPAddress | Remove-NetIPAddress -Confirm:$False; New-NetIPAddress -IPAddress 192.168.50.1 -PrefixLength 24 -InterfaceAlias 'vEthernet (WSL)'; Get-NetNat | ? Name -Eq WSLNat | Remove-NetNat -Confirm:$False; New-NetNat -Name WSLNat -InternalIPInterfaceAddressPrefix 192.168.50.0/24;"
6. 创建以上文件的快捷方式,添加到C:\Users\XXX\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup下。
这样Windows每次开机都会为wsl创建一个固定IP的虚拟网卡。

注意这个脚本需要管理员权限执行。

固定wsl每次启动时的ip

wsl每次启动的时候会随机生成ip。
这一部分目前暂时没有找到很好的方法。
一种方法是写一个配置脚本,每次启动wsl后运行一下,重新设置一下wsl ip

  1. 在windows下创建脚本
    wsl -d Ubuntu -u root ip addr del $(ip addr show eth0 ^| grep 'inet\b' ^| awk '{print $2}' ^| head -n 1) dev eth0
    wsl -d Ubuntu -u root ip addr add 192.168.50.2/24 broadcast 192.168.50.255 dev eth0
    wsl -d Ubuntu -u root ip route add 0.0.0.0/0 via 192.168.50.1 dev eth0
    wsl -d Ubuntu -u root echo nameserver 202.103.24.68 ^> /etc/resolv.conf
    
  2. 每次wsl启动时,在windows下运行以上脚本。

注意这个脚本需要管理员权限执行。

设置wsl开机启动并不会自动退出(可选)

将wsl驻留化会占用一定的内存。
(待更新)

将wsl sshd端口映射到windows

在windows命令行(管理员)下运行

netsh interface portproxy add v4tov4 listenport=9091 connectaddress=192.168.50.2 connectport=9091

查看是否成功

netsh interface portproxy show all

输出如下

侦听 ipv4:                 连接到 ipv4:

地址            端口        地址            端口
--------------- ----------  --------------- ----------
*               9091        192.168.50.2    9091

设置wsl的交换空间swap大小(可选)

如果电脑的硬件RAW很小,分给wsl用的RAW也很小,我们可以适当增大wsl的swap空间,通过磁盘缓解RAW不足。
参考Configuration setting for .wslconfig

  1. 在windows用户目录下(C:/User/XXX)创建.wslconfig文件,内容如下:
    [wsl2]
    swap = 8GB
    
  2. 重启wsl后,在命令行输入 free -m
    已经扩大到8GB
                  total        used        free      shared  buff/cache   available
    Mem:           7885         253        7574           0          57        7474
    Swap:          8192          34        8157
    

设置wsl的pip清华源

  1. 在wsl下运行
    pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
    

设置ssh只允许密钥访问

  1. 打开ssh配置文件sshd_config

    PubkeyAuthentication yes # 公钥访问
    PasswordAuthentication no # 禁止密码
    
### 配置 WSL2 上的 Ubuntu 图形界面 #### 启用并设置 WSL2Ubuntu 为了确保环境正确配置,在 Windows 中应先启用 WSL2 功能,并安装目标版本的 Ubuntu 发行版。对于特定版本的需求,如 Ubuntu 20.04 并且 `version=2` 的情况,可以通过 PowerShell 或命令提示符来设定默认版本为 WSL2[^1]。 #### 安装必要的软件包 在启动后的 Ubuntu 终端里,更新现有的列表并且安装桌面环境,比如 GNOME Desktop Environment (GDE),这一步骤能够提供完整的图形化操作体验: ```bash sudo apt update && sudo apt upgrade -y sudo apt install ubuntu-desktop gnome-shell -y ``` #### 解决 Systemd 支持问题 由于早期 WSL 版本不支持 systemd,而很多现代 Linux 应用和服务依赖于它运行,因此需要特别处理以激活此服务。一种推荐的方法是在 `/etc/wsl.conf` 文件中加入适当配置从而让 WSL 使用 systemd 初始化进程。 #### 设置 X Server 为了让 GUI 程序正常工作,还需要一台 X Window 服务器桥接 Linux 应用程序与 Windows 显示系统之间的通信。下载并安装 VcXsrv Windows X Server 是实现这一点的有效途径之一[^2]。完成之后,每次想要访问图形应用程序时都要启动该 X server 实例。 #### 测试图形界面应用 最后,通过简单的测试验证一切是否就绪。可以尝试打开一个终端窗口内的图像型编辑器或其他任何已知能在 Linux 下工作的可视化工具来进行确认。例如,使用 Firefox 浏览器作为测试对象: ```bash export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0 firefox & ``` 上述指令设置了DISPLAY变量指向本地主机地址,使得远程渲染的内容能够在当前机器上显示出来。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值