玩转 WSL:Windows 一键开启 Linux 子系统,轻松实现 SSH 远程连接

WSL(Windows Subsystem for Linux)具有诸多显著优势,对于许多用户而言非常实用:

  • Linux 兼容性:能让用户在 Windows 系统上运行 Linux 发行版,提供与原生 Linux 相似的命令行工具和环境,满足开发人员、系统管理员等在 Windows 平台使用 Linux 工具和软件的需求。
  • 轻量级虚拟化:采用轻量级虚拟化技术,不同于传统虚拟机,对系统性能影响极小,不会导致系统变慢或占用大量系统资源。
  • 丰富命令行工具:提供大量 Linux 命令行工具和实用程序,如 bash shell、grep、sed、awk 等,还有多种编程语言的解释器和编译器,方便开发人员使用。
  • 与 Windows 良好集成:可轻松访问 Windows 文件系统中的文件,通过命令行在两者间传输文件,实现数据共享和互操作性。
  • 便捷的开发和测试环境:开发人员能在心仪的 Linux 发行版中创建开发和测试环境,无需离开 Windows 桌面,利于跨平台应用程序的开发和测试。
  • 安全性:提供隔离环境,运行 Linux 应用程序不会影响 Windows 的安全性,有助于隔离潜在威胁。

更重要的是,借助 WSL,你可以运行任何想尝试的项目,甚至建站也不在话下。

一、开启 Windows 功能

使用快捷键操作:

按下 Win + R 组合键,打开运行对话框。

在对话框中输入 appwiz.cpl 并按下回车键,打开 "程序和功能" 窗口。

在左侧面板中,单击 "启用或关闭 Windows 功能"。

在打开的窗口中,勾选【Hyper - V】和【适用于 Linux 的 Windows 子系统】,然后重启电脑。

二、更新和设置 WSL 版本

在 Windows 菜单图标上右键鼠标,打开【终端管理员】。

输入相关代码设置 WSL 2 作为默认版本,且需先更新 WSL 内核版本,否则可能报错。

更新 WSL 内核版本的代码:

bash 复制代码
wsl.exe --update

设置 WSL 版本的代码:

bash 复制代码
wsl --set-default-version 2

三、安装 Linux 系统

在 PowerShell 中,可使用相应命令安装所选的 Linux 发行版。经测试,Debian 存在较多依赖问题,因此以 Ubuntu 为例:

bash 复制代码
wsl --install -d Ubuntu

若要安装其他系统,将 Ubuntu 替换为所需 Linux 发行版的名称即可。

安装过程中,PowerShell 会显示相关安装信息,安装完成后会自动打开 Linux 终端窗口。

由于 Ubuntu 默认不允许设置root和admin用户名,所以需设置一个其他喜欢的用户名,回车确认后,会要求设置密码,输入密码时不会显示。设置完成后回车,稍等片刻就会自动登录到 Linux 系统。

若要使用root账户,在登录状态下输入sudo -i,然后输入刚才设置的密码进行账户切换,接着输入apt update更新源,之后就可以安装所需的依赖了。

四、开启 SSH 并允许 root 登录

  1. 安装 SSH 服务器:在 Linux 子系统中,打开终端,运行以下命令安装 OpenSSH 服务器:
shell 复制代码
sudo apt updatesudo apt install openssh-server
  1. 修改配置:修改配置文件内容,将端口设为 22,允许密码和 root 登录。

运行以下命令修改配置文件:

shell 复制代码
sudo nano /etc/ssh/sshd_config

找到以下内容并去掉前面的 #号(注释),同时将PermitRootLogin prohibit-password更改为PermitRootLogin yes,以允许用 root 登录:

shell 复制代码
Port 22
PermitRootLogin yes
PasswordAuthentication yes

修改完成后,按 Ctrl + X 保存并退出。

  1. 重启 SSH 服务:运行service ssh restart或sudo service ssh --full-restart命令重启服务。
shell 复制代码
service ssh restart
  1. 终端测试连接:输入指令,格式为ssh 用户名@域名/IP,例如:
shell 复制代码
ssh root@0.0.0.0ssh 127.0.0.1
  1. 设置 SSH 服务器开机自启动:运行以下命令确保 SSH 服务器在系统启动时自动启动:
shell 复制代码
sudo systemctl enable ssh
  1. 查看 SSH 监听端口
shell 复制代码
sudo ss -tuln | grep 22
  1. 查看 SSH 服务器状态
shell 复制代码
sudo service ssh status

五、设置默认使用 root 登录系统(可选)

登录到 root 用户。在 WSL 中,可使用 sudo 命令获取 root 权限,运行以下命令并输入当前用户的密码:

shell 复制代码
sudo -i

输入 root 用户的密码后,将切换到 root 用户。

若要永久更改默认用户为 root 用户,需编辑 WSL 配置文件。使用喜欢的文本编辑器(如 nano 或 vim)打开/etc/wsl.conf文件(如果文件不存在,则创建它):

shell 复制代码
sudo nano /etc/wsl.conf

在打开的wsl.conf文件原内容下面添加以下内容:

shell 复制代码
[user]default=root

这会将默认用户设置为 root 用户。保存并关闭文件,关闭当前终端窗口并重新打开一个终端窗口。

运行以下命令重新启动 WSL 以应用更改:

shell 复制代码
wsl --shutdown

六、删除刚开始创建的用户(可选)

使用 userdel 命令删除要删除的用户帐户。假设要删除的用户帐户名为 username,运行以下命令:

arduino 复制代码
sudo userdel username #删除用户账户sudo rm -r /home/username #删除用户文件夹

七、设置端口转发

为了能从外部连接到 WSL Linux 子系统,需确保系统具有公共 IP 地址,或设置端口转发以将流量路由到 WSL 子系统的局域网 IP 地址。同时,要检查网络配置,确保 WSL 子系统能访问公共网络且有可供外部访问的 IP 地址。

增加转发的命令:

ini 复制代码
netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=22 connectaddress=127.0.0.1 connectport=22

删除转发的命令:

go 复制代码
netsh interface portproxy delete v4tov4 listenport=22 listenaddress=0.0.0.0

列出当前端口转发规则的命令:

kotlin 复制代码
netsh interface portproxy show all

测试连接的命令:

css 复制代码
ssh username@ip -p 22

八、卸载 Linux 系统

若需卸载 Linux 系统,可使用以下命令:

css 复制代码
wsl --unregister Ubuntu
相关推荐
David爱编程1 小时前
Java 字符串拼接用 +、StringBuilder 还是 StringBuffer?一篇给你终极答案
java·后端
莹莹啦1 小时前
Java 内存模型(Java Memory Model, JMM)解析
后端
码事漫谈1 小时前
C#文件复制异常深度剖析:解决"未能找到文件"之谜
后端
布列瑟农的星空1 小时前
34岁老前端的一周学习总结(2025/8/15)
前端·后端
_風箏2 小时前
Zabbix【问题 01】安装问题 (比 zabbix-release-5.0-1.el7.noarch 还要新) 问题处理
后端
卓码软件测评2 小时前
网站测评-利用缓存机制实现XSS的分步测试方法
java·后端·安全·spring·可用性测试·软件需求
星星电灯猴2 小时前
一次真实的 TF 上架协作案例,从证书到分发的多工具配合流程
后端
rannn_1113 小时前
【Linux学习|黑马笔记|Day4】IP地址、主机名、网络请求、下载、端口、进程管理、主机状态监控、环境变量、文件的上传和下载、压缩和解压
linux·笔记·后端·学习
惜鸟3 小时前
如何让大模型输出结构化数据
后端