Windows10下的WSL的使用和ssh配置

WSL介绍

WSL(Windows Subsystem on Linux),适用于 Windows 的 Linux 子系统,是微软和Canonical(Ubuntu 的母公司)共同开发的,在Windows 10后加入的功能,能够在Windows 10 系统中挂载一个Linux 系统,用起来不像虚拟机那样臃肿、开机缓慢、性能低下,是Windows使用者用来进阶使用Linux系统的一个不错的选择,开发人员可在其上运行GNU/Linux环境(包括大多数命令行工具、实用程序和应用程序)。

WSL的安装

第一步:启用虚拟机平台和 Linux 子系统功能

确保你的windows10系统的内部版本高于或等于16215 (来自官网提示);
在win10的win图标处,右键->管理员权限启动 PowerShell (或者win+r-->PowerShell-->ctrl+shift+enter),出现PowerShell的命令行界面后,接着输入以下命令启用虚拟机平台:

Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform

命令运行后,等待一段时间,会出现如下结果,代表虚拟平台已经开启:

Running
[ooooooooooooooo                        ]
Path          :
Online        : True
RestartNeeded : False

虚拟平台开启后,接着在命令行中输入以下命令开始Linux子系统:

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

和开启虚拟平台有一些区别,命令运行结束后,命令行会出现是否重启的界面:

Running
[ooooooooooooooo                        ]
是否立即重启计算机以完成此操作?
[Y] Yes  [N] No  [?] 帮助 (默认值为“Y”): n
Path          :
Online        : True
RestartNeeded : True

当然,上述windows 10的功能的开启也可以通过启用或者关闭windows功能来启用:
win搜索-->控制面板-->程序-->卸载程序-->启用或者关闭 Windows 功能-->勾选虚拟机平台和适用于 Linux 的 Windows 子系统:


启用Windows功能

完成设置后,记得重启计算机!

第二步:选择一个 Linux 发行版进行安装

windows打开微软应用商店(store),在搜索框中输入Linux进行搜索,在搜索结果中有很多Linux发行版可以选择,开始你的选择,获取该发行版,然后安装:


Linux发行版

选择Ubuntu系统

在这里需要注意,在store中的安装并没有实际上完成 Linux 子系统的安装,还需要运行一次已安装的 Linux 发行版,这样才会完成真正的安装:


完成WSL的安装

一般不愿意折腾的都推荐使用这种方法安装Linux发行版,但是官方也考虑到了其他的情况,如无法(或不想)通过 Microsoft Store 安装 WSL Linux 发行版、可能运行的是不支持 Microsoft Store、系统环境中不允许 Microsoft Store 使用的 Windows Server 等等,当出现以下情况时,可以通过如下的方法下载和安装:

手动下载适用于 Linux 的 Windows 子系统发行版包

有时候,你可能无法(或不想)通过 Microsoft Store 安装 WSL Linux 发行版,比如说,你运行的可能不支持 Microsoft Store 或公司网络策略和/或管理员在你的环境中不允许 Microsoft Store 使用的 Windows Server 或长期服务(LTSC)桌面操作系统 SKU。
在这些情况下,虽然 WSL 本身可用,但如果你无法访问应用商店,如何下载并在 WSL 中安装 Linux 发行版?

浏览器下载发行版

如果 Microsoft Store 应用不可用,则可以在浏览器中通过单击以下链接下载并手动安装 Linux 发行版:
Ubuntu 18.04
Ubuntu 18.04 ARM
Ubuntu 16.04
Debian GNU/Linux
Kali Linux
OpenSUSE Leap 42
SUSE Linux Enterprise Server 12
WSL 的 Fedora Remix
点击链接后,可以下载CanonicalGroupLimited.Ubuntu18.04onWindows_1804.2018.817.0_x64__79rhkp1fndgsc.Appx这样的以.appx为后缀的包到浏览器下载文件夹,然后按照下面的安装说明安装下载的发行版。

命令行下载发行版

使用 PowerShell WebRequest下载

下载发行版,也可以通过windows的命令行工具——PowerShell来操作,命令提示符是Invoke-WebRequest,如下是下载示例:

cd C:\Users\dulun\Downloads
Invoke-WebRequest -Uri https://aka.ms/wsl-ubuntu-1804 -OutFile Ubuntu-1804.appx -UseBasicParsing

来自官方的提示:下载开始的时候可以看到一个进度条,如果预估下载的时间比较长,请通过设置$ProgressPreference = 'SilentlyContinue'来关闭进度栏

使用 PowerShell curl.exe 下载

Windows 10 春季2018更新(或更高版本)包含可从命令行调用 web 请求(例如 HTTP GET、POST、PUT 等命令)的常用命令行工具——curl.exe,名字是客户端(client)的 URL 工具的意思。使用curl.exe下载的示例:

curl.exe -L -o Ubuntu-1804.appx https://aka.ms/wsl-ubuntu-1804
安装下载的Linux发行版

在Windows10系统中,使用PowerShell安装已下载的Linux 发行版,但是需要进入到下载的文件的目录,运行Add-AppxPackage \.app_name.appx,示例:

cd C:\Users\dulun\Downloads
Add-AppxPackage Ubuntu-1804.appx

Windows Server安装WSL

但是有些用户使用的是Windows Server的系统,这和Windows10的安装有一些区别,前面的开启受信用的执行环境是一样的,启用虚拟机平台和适用于 Linux 的 Windows 子系统,然后重启计算机,必须重启。然后按照上面的链接、下载方式选择合适Linux 发行版、下载。

Windows Server提取并安装 Linux 发行版

下载发行版后,请提取其内容,并手动安装发行版,使用PowerShell提取下载的<distro>.appx包的内容:

Rename-Item .\Ubuntu-1804.appx .\Ubuntu.zip
Expand-Archive .\Ubuntu.zip .\Ubuntu
cd .\Ubuntu && ls  ##进入Ubuntu目录并查看包含的文件
Ubuntu文件

在名为Ubuntu的目标文件夹中运行Linux 发行版启动器应用程序ubuntu1804.exe以完成安装:

.\ubuntu1804.exe

第三步:初始化、查看和使用 WSL

初始化安装Linux发行版

新安装完WSL后,首次运行新安装的分发版,会打开一个控制台窗口,其中指出需要等待一两分钟时间来完成安装:

这一步是最后的安装阶段,Linux发行版的文件将会被解压缩,然后储存到电脑上供使用,时间的长短取决于电脑存储设备的性能,这一步也只是当Linuxf发行版是初始安装的版本时,才需要执行初始化安装——这也是为什么后期WSL的启动飞速的原因。

初始话安装结束后,系统提示创建新的用户帐户及其密码:


完成WSL的安装

此用户帐户用于启动Linux 发行版时默认登录的非管理员用户。

可根据需要选择任何用户名和密码 - 它们与 Windows 用户名无关。打开此Linux子系统时,系统不需要输入密码,但是如果使用sudo权限的时候,这需要输入密码,所以密码还是需要记住的。

在windows中查看安装的WSL

PowerShell中使用 wsl -l 可以列出当前系统上已经安装的 Linux 子系统名称。注意这里的 -l 是列表list的缩写,是字母l不是其他字符。

查看WSL

如果运行命令的时候,提示wsl不是内部或外部命令,说明你第一步的“适用于 Windows 的 Linux 子系统”没有设置完整,请先完成第一步。

如果提示没有发现任何已安装的 Linux子系统,说明你没有安装 Linux 发行版,或者只是从商店或者浏览器下载了,没有运行它执行真正的安装,请先完成本文第二步。

在这里如果直接在PowerShell中输入wsl,也可以直接进入安装的Linux子系统。

WSL的配置ssh的开机自启动

因为我是在Workstation上安装的WSL,本意是取代原先使用的虚拟机,这里说一下为什么舍弃了虚拟机,我刚开始使用的是VirtualBox,这个软件吧我第一次使用,KI‘s IT部门推荐的,但是除了安装完第一次以后,我就再也没有打开过,IT小哥也不知道怎么办,我只能转投了VMware,这不是我第一次使用了,刚来KI的时候,因为条件艰苦,我使用了办公室老机器打了一个虚拟机用来搭建流程,但是用的只能说还行,毕竟只是前期搭建。
后来新机器来了以后,因为网络驱动器(俗称存储Server)的存在,我没有办法安装Ubuntu,只能先安装KI的windows 10,然后使用实验室博后的账号登录,Server才会出现(人家有access的)。VMware在KI的Software Center居然下不到,想尽了办法安装好,体验了5天左右,缺点出来了,我配的服务器的内存是256g,但是VMware的max memory是64g;机器配了两个cpu,共40个核,但是VMware的max processor数是16,这导致我配置的机器大部分性能根本没法发挥出来,于是我转身就投身了WSL的怀抱,配置起来也是各种奇葩,因为KI安装软件的各种限制。
既然是服务器的使用,肯定需要用到SSH的配置,因为我一般是使用自己的电脑用putty、xshell等软件连接服务器的,但是WSL的ssh不是安装好久开机自启动,需要设置,接下来简单说一下我的设置。

Ubuntu 启用SSH所需设置
#设置root的口令(密码),用作后续登陆使用
sudo passwd root

#安装openssh-server(ubuntu自带已安装,但是我使用有问题,没找到原因)
sudo apt remove openssh-server
sudo apt install openssh-client openssh-server

#备份原始的sshd_config
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
sudo cp /etc/ssh/ssh_config /etc/ssh/ssh_config.bak

#使用vim进行编辑,按i进入insert模式
sudo vim /etc/ssh/sshd_config

在vim中找到对应项并修改,ESC,输入`wq`保存退出:
Port 2222
ListenAddress 0.0.0.0        # 如果需要指定监听的IP则去除最左侧的井号,并配置对应IP,默认即监听PC所有IP
PermitRootLogin no           # 如果你需要用 root 直接登录系统则此处改为 yes
PasswordAuthentication yes    # 将 no 改为 yes 表示使用帐号密码方式登录

#使用vim进行编辑,按i进入insert模式
sudo vim /etc/ssh/sshd_config

#在vim中找到对应项并修改,ESC,输入`wq`保存退出:
Port 2222
ListenAddress 0.0.0.0        # 如果需要指定监听的IP则去除最左侧的井号,并配置对应IP,默认即监听PC所有IP

#启动ssh,查看status
sudo service ssh start             #启动SSH服务
sudo service ssh status            #检查状态
sudo systemctl enable ssh          #开机自动启动ssh命令,我好想失效了
WSL开机自启动SSH

因为我使用systemctl这个失效了,所以就另想办法开机自启动ssh;

Ubuntu 系统添加启动:

##登录帐号就会启动,写入到bash中
sed -i '/^sudo service ssh --full-restart/ d' ~/.bashrc

##使用sudo开机自启动
echo -e "%sudo\tALL=(ALL) NOPASSWD: /usr/sbin/service ssh --full-restart" | sudo tee -a /etc/sudoers

##检测ssh的状态,也是写入到bash中
cat << 'EOF' >> ~/.bashrc
sshd_status=$(service ssh status)
if [[ $sshd_status = *"is not running"* ]]; then
  sudo service ssh --full-restart
fi
EOF

如果大家觉得麻烦,可以使用这个自动安装和配置的脚本,我修改了一下,大家用之前可以看一下大概,这里也会安装一下基础的安装包。

Windows启用SSH端口所需设置

因为在前面设置的ssh端口是2222,22端口在Windows下有其他占用了,所以还需要去防火墙中设置一下这个端口的拨入,win+防火墙,进入防火墙页面,按如下操作:


设置防火墙

端口-->TCP-->特点本地端口2222-->允许连接-->下一步确定;设置完成。

Windows 系统添加自动启动

在ubuntu中添加一个脚本程序,详情如下:

sudo vi /etc/init.wsl
#!/bin/sh
# Filename: /etc/init.wsl
# Usage: sudo /etc/init.wsl [start|stop|restart]
/etc/init.d/ssh $1
/etc/init.d/cron $1
/usr/sbin/rstudio-server $1
mount -t drvfs 'P:\PHA' /mnt/shareP

Windows 中添加自动启动的脚本 startubuntu.vbs;
a. 打开当前用户默认自启动加载文件夹,在 Windows 中,开始-运行(或者win+r),输入:shell:startup

b. 在当前用户默认自启动加载文件夹中,添加要加载的VBS脚本文件 startubuntu.vbs 。

Set ws = WScript.CreateObject("WScript.Shell")
ws.run "wsl -d ubuntu -u root /usr/sbin/service ssh --full-restart", vbhide
ws.run "ubuntu run sudo /etc/init.wsl start", vbhide

重启 Windows 系统,验证WSL ssh服务是否自动启动。

至此,我这段时间的折腾就在这里了,还有些有的没的也就没写了,服务器配置好了,还需要去把流程什么的迁移过来,后期再写写WSL中挂在硬盘、移动硬盘、网络驱动器等等再说吧!

References

如何在 Windows 10 中安装 WSL2 的 Linux 子系统

WSL 服务自动启动

在Windows上舒适地使用Linux子系统(一):WSL的安装及配置

                        —— dulunar 后记于 2019.10
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 207,113评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,644评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,340评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,449评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,445评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,166评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,442评论 3 401
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,105评论 0 261
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,601评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,066评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,161评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,792评论 4 323
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,351评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,352评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,584评论 1 261
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,618评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,916评论 2 344