Windows开启(WSL)Linux子系统并远程连接SSH

前言

简单的说一下WSL的好处:

Linux 兼容性:WSL 允许在 Windows 操作系统上运行 Linux 发行版,提供了与原生 Linux 相似的命令行工具和环境。这对于开发人员、系统管理员和其他需要在 Windows 平台上访问 Linux 工具和软件的用户非常有用。

轻量级虚拟化:WSL 使用轻量级虚拟化技术,而不是传统的虚拟机,这意味着它几乎不会对系统性能产生明显影响。这使得在 Windows 上运行 Linux 不会导致系统变慢或需要大量系统资源。

命令行工具:WSL 提供了大量的 Linux 命令行工具和实用程序,使开发人员能够在 Windows 上使用它们。这包括 bash shell、grep、sed、awk 等工具,以及编程语言的解释器和编译器。

与 Windows 集成:WSL 与 Windows 集成得非常好,您可以轻松访问 Windows 文件系统中的文件,通过命令行在 Windows 和 Linux 之间传输文件,实现数据共享和互操作性。

开发和测试环境:开发人员可以在自己喜欢的 Linux 发行版中创建开发和测试环境,而无需离开 Windows 桌面。这对于跨平台应用程序的开发和测试非常有帮助。

安全性:WSL 提供了一个隔离的环境,可以在其中运行 Linux 应用程序,而不会影响 Windows 的安全性。这有助于隔离潜在的威胁。

最最最重要的是,你可以运行任何你想玩的项目,建站也是没有问题的。

一、开启Windows功能

使用快捷键:

按下 Win + R 键组合,这将打开运行对话框。
Windows开启(WSL)Linux子系统并远程连接SSH-阿帕胡
在运行对话框中,输入 appwiz.cpl 并按下回车键。这将打开“程序和功能”窗口。

Windows开启(WSL)Linux子系统并远程连接SSH-阿帕胡
在左侧面板中,单击“启用或关闭Windows功能”,这将打开​窗口。

Windows开启(WSL)Linux子系统并远程连接SSH-阿帕胡
如图所示,勾选【Hyper-V】和【适用于Linux的Windows子系统】后重启电脑。

二、更新和设置WSL版本

在Windows菜单图标右键鼠标,打开【终端管理员】
Windows开启(WSL)Linux子系统并远程连接SSH-阿帕胡
输入以下代码设置WSL 2作为默认版本
运行以下代码更新WSL内核版本,不然会报错

wsl.exe --update

运行以下代码设置WSL版本

wsl --set-default-version 2

Windows开启(WSL)Linux子系统并远程连接SSH-阿帕胡

三、安装Linux系统

安装 Linux 发行版:
在 PowerShell 中,您可以使用以下命令来安装所选的 Linux 发行版。因为我测试Debian会有很多依赖问题,所以以 Ubuntu 为例:

wsl --install -d Ubuntu

如果你要安装其他系统,请将 Ubuntu 替换为您要安装的 Linux 发行版的名称。

Windows开启(WSL)Linux子系统并远程连接SSH-阿帕胡
安装完成后会自动打开Linux终端窗口,

因为Ubuntu默认不允许设置rootadmin用户名,所以要设置一个其他你喜欢的用户名,然后回车确认。然后会要求你设置密码,输入密码的时候不会显示。设置完成后回车稍等一会就会自动登录到Linux系统。如同所示:
Windows开启(WSL)Linux子系统并远程连接SSH-阿帕胡

如果要使用root账户,请在登陆状态下输入sudo -i后输入你刚才设置的密码进行账户切换,然后apt update进行更新源后就可以安装你需要的依赖啦。

四、开启SSH并允许root登录

1、安装SSH服务器

在 Linux 子系统中,打开终端,运行以下命令来安装 OpenSSH 服务器:

sudo apt updatesudo apt install openssh-server

2、修改配置端口为22,允许密码和root登录。

运行以下命令进行修改配置文件内容

sudo nano /etc/ssh/sshd_config

找到下面的内容并去掉注释在前面的#号,其中把PermitRootLogin prohibit-password更改为PermitRootLogin yes这是允许用root登录的。

Port 22PermitRootLogin prohibit-passwordPasswordAuthentication yes

去掉前面的#号后Ctrl+X保存并退出。

3、重启SSH服务
运行service ssh restart 或 sudo service ssh --full-restart命令进行重启服务。

4、终端测试连接
输入指令,格式为:ssh 用户名@域名/IP

ssh [email protected]ssh 127.0.0.1

5、确保SSH服务器会在系统启动时自动启动:

运行以下命令来设置SSH服务器开机自启动:

sudo systemctl enable ssh

6、配置永久解决方案
通过上面的方法,我们可以通过xshell登录自己电脑的Linux。但是断开之后重新开机,我们又需要重新配置SSH。因此,我们需要配置以下命令下,一劳永逸。
sudo service ssh --full-restart ## 将该命令保存为service.sh,存在home目录下

# >>> service ssh restart >>># for Xshell connectionsudo service ssh --full-restart# <<< service ssh restart <<<

配置好之后,下次开机,只需要在Linux子系统的默认终端运行sh service.sh命令后,关掉终端改用xshell登录即可。

7、查看SSH监听端口

sudo ss -tuln | grep 22

8、SSH服务器状态

sudo service ssh status

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

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

sudo -i

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

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

sudo nano /etc/wsl.conf

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

[user]default=root

这会将默认用户设置为 root 用户。

保存并关闭文件。关闭当前终端窗口并重新打开一个终端窗口。

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

wsl --shutdown

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

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

sudo userdel username #删除用户账户sudo rm -r /home/username #删除用户文件夹

七、设置端口转发

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

增加转发的命令:

netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=22 connectaddress=127.0.0.1 connectport=22

删除转发的命令:

netsh interface portproxy delete v4tov4 listenport=22 listenaddress=0.0.0.0

使用以下命令列出当前的端口转发规则:

netsh interface portproxy show all

测试连接的命令:

ssh username@ip -p 22

八、卸载Linux系统

wsl --unregister Ubuntu
THE END