远程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 # 禁止密码
    
Windows Subsystem for Linux 2(WSL2)是Windows 10操作系统中的一个功能,它允许用户在Windows中运行Linux操作系统。对于那些熟悉Linux的开发人员来说,WSL2是一种非常方便的方式来使用他们所熟悉的命令行界面和工具。 在WSL2中,用户可以使用多种方法进行远程访问。其中,其中之一是通过ssh远程登录。 SSH(Secure Shell)是一种安全的网络协议,允许用户在不安全的网络上进行加密通信。通过ssh远程登录WSL2,用户可以像在本地一样使用WSL2,同时还可以利用Windows的GUI界面。 要使用ssh远程登录WSL2,用户需要先启用ssh服务器。在Windows PowerShell或命令提示符中,可以使用以下命令来启动ssh服务器: ``` sudo apt update sudo apt install openssh-server sudo service ssh start ``` 安装和启动过程完成后,可以使用ssh客户端连接到WSL2。在本地电脑上,打开一个终端窗口并输入以下命令: ``` ssh [username]@[IP address of WSL2] ``` 其中,[username]是WSL2中的用户名,[IP address of WSL2]是WSL2的IP地址。默认情况下,WSL2会动态分配IP地址,可以使用以下命令在WSL2中查找其IP地址: ``` ip addr show eth0 | grep inet | awk '{print $2}' | cut -d / -f 1 ``` 使用这种方法进行远程访问,需要确保WSL2和Windows的防火墙设置正确。在Windows防火墙中,需要允许ssh流量通过。在WSL2中,需要允许ssh服务器通过WSL2的防火墙。可以使用以下命令配置WSL2防火墙: ``` sudo ufw allow ssh ``` 使用ssh远程登录WSL2时,还需要注意ssh客户端和服务端之间的证书问题。如果出现证书错误,需要检查证书是否正确配置。 总之,使用ssh远程登录WSL2是一种方便的方式,可让用户像在本地一样使用WSL2。通过配置Windows和WSL2的防火墙,并确保证书正确配置,用户可以安全、可靠地进行远程访问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值