1. 为什么我会把SSH入口放在Alpine上,而不是Ubuntu或Windows原生OpenSSH
先说清楚我在干什么。我想在Windows上开一个常驻的SSH入口,让我在外面或者局域网里能随时登回来,还能通过这个入口再跳到内网其他机器、做端口转发,说白了就是一个轻量跳板机。以前我图省事,直接在Windows上装了OpenSSH Server,但用下来有两个很别扭的地方:一是Windows的Shell环境干正事太憋屈,想用scp、rsync、socat这些工具要么得折腾第三方套件,要么就得跟PowerShell较劲;二是Windows服务一更新、防火墙规则一乱,排查起来牵连太多。后来我换了个思路,干脆在WSL里塞一个Alpine Linux,让Alpine专门跑sshd,当这个“SSH门户”。
为什么是Alpine而不是Ubuntu?最直接的理由是体积和内存。Alpine的minirootfs镜像只有几MB,装完openssh、openssl这一套之后,整个发行版也才几十MB,运行时的内存占用通常不超过100MB。相比之下,Ubuntu随便一个基础镜像就是几百MB,跑起来再加上各种后台服务,内存占用轻松上300MB。拿它当跳板机有点杀鸡用牛刀。Alpine的包管理器apk还特别干净,依赖简单,安装OpenSSH基本就是一把梭,没有任何多余的Python、systemd之类的包拖进来。对于安全敏感的场景,体积小等于攻击面小,尤其适合只暴露一个SSH端口的主机。
还有一个被很多人忽略的点:WSL2默认的localhost转发机制,让Windows本机可以直接通过localhost访问到WSL里监听的端口。这意味着我在Windows上跑ssh alpine@localhost -p 2222,实际是在跟WSL里的Alpine对话。配置的时候不需要关心虚拟机IP、NAT端口映射这些东西,等基础通了之后再考虑局域网访问的问题,心理负担小很多。
当然,这套方案也不是没有前提。你对Linux命令得有个最基础的认识,起码知道apk add是装包、rc-service是启服务。如果你是纯Windows用户、一点都不想碰Linux,那还是老老实实用Windows自带的OpenSSH吧。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 把Alpine塞进WSL:手动导入rootfs和初始化环境
2.1 用wsl --import手动导入Alpine镜像
安装Alpine到WSL的路径,我推荐手动下载minirootfs然后用wsl --import导入,而不是去Microsoft Store里装。Store里的Alpine版本更新往往有滞后,而且有些精简版不带完整的OpenSSH包源,手动导入则完全可控。
先保证WSL环境本身没问题。如果你是从零开始,先跑一下wsl --install,装完之后重启,把VirtualMachinePlatform功能确认打开。如果遇到过wsl --install特别慢或者卡在403,别跟它死磕,直接检查Windows功能里“适用于Linux的Windows子系统”和“虚拟机平台”有没有启用,再手动下载WSL2内核更新包,之后重新wsl --update。
接着选择一个目录存放发行版文件。我不想把WSL放在C盘系统盘,所以一般会在D盘专门建一个目录。在D盘创建D:\WSL\Alpine之后,用管理员PowerShell执行:
powershell复制curl -L -o D:\WSL\Alpine-rootfs.tar.gz https://dl-cdn.alpinelinux.org/alpine/v3.20/releases/x86_64/alpine-minirootfs-3.20.3-x86_64.tar.gz
wsl --import Alpine D:\WSL\Alpine D:\WSL\Alpine-rootfs.tar.gz --version 2
第一条命令下载Alpine 3.20的minirootfs,第二条命令将其导入成为一个叫Alpine的WSL发行版,并指定使用WSL2虚拟化平台。这里要注意,D:\WSL\Alpine是发行版落地目录,不是镜像文件目录,别搞混。如果你的网络对国外CDN不友好,下载镜像卡住,就找国内镜像源,把URL里的dl-cdn.alpinelinux.org换成你的网络环境下能用的镜像地址,文件校验一下sha256再
