2020年9月

随着 Docker 的使用量越来越大,监控 Docker 容器正在变得更有挑战性。每天都有大量的 Docker 容器被创建,因此如何监控它们就变得非常重要。目前已经有一些内置的工具和技术,不过对它们进行配置有一些复杂。随着基于微服务的架构正在变成接下来事实上的标准,学会这种技术将为你的知识库再添一项新技能。

基于上述场景,对一种轻量、健壮的镜像管理工具的需求日益增加。Portainer.io 解决了这个问题。 Portainer.io(最新版本是 1.20.2)非常轻量,只需 2-3 个命令就可以配置好,已经在 Docker 用户中流行起来。

比起其他工具,这个工具有很多优势,其中一些如下所示:

  • 轻量(安装此工具仅需 2 到 3 个命令,与此同时安装镜像的大小在 26 M 到 30 M 之间)
  • 健壮且易用
  • 可用于 Docker 监控和构建
  • 提供对 Docker 环境的详细概况
  • 可以管理容器、镜像、网络和卷
  • Portainer 部署方便,仅需一个 Docker 命令(可以在任意地方运行)
  • 可以对完整的 Docker 容器环境进行监控

Portainer 同时具有以下服务:

  • 社区支持
  • 企业支持
  • 与合作伙伴 OEM 服务一起的专业服务

Portainer 的功能和特性如下:

1. 配备了漂亮的仪表盘,易于使用和监控
2. 自带大量内置模板,便于操作和创建
3. 服务支持(仅 OEM 和企业用户)
4. 对容器、镜像、网络、卷以及配置进行几乎实时的监控
5. 包含 Docker 集群监控功能
6. 功能多样的用户管理

另请阅读:如何在 Ubuntu 16.04 / 18.04 LTS 版本中安装 Docker CE

如何在 Ubuntu Linux / RHEL / CentOS 系统上安装和配置 Portainer.io

注意:下面的安装过程是在 Ubuntu 18.04 上完成的,但是对 RHEL 和 CentOS 同样适用,同时假设你已经在系统上安装了 Docker CE。

root@linuxtechi:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 18.04 LTS
Release:        18.04
Codename:       bionic
root@linuxtechi:~$

为 Portainer 创建卷:

root@linuxtechi:~$ sudo docker volume create portainer_data
portainer_data
root@linuxtechi:~$

使用下面的 Docker 命令来运行 Portainer 容器:

root@linuxtechi:~$ sudo docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer
Unable to find image 'portainer/portainer:latest' locally
latest: Pulling from portainer/portainer
d1e017099d17: Pull complete
0b1e707a06d2: Pull complete
Digest: sha256:d6cc2c20c0af38d8d557ab994c419c799a10fe825e4aa57fea2e2e507a13747d
Status: Downloaded newer image for portainer/portainer:latest
35286de9f2e21d197309575bb52b5599fec24d4f373cc27210d98abc60244107
root@linuxtechi:~$

安装完成之后,通过主机或 Docker 的 IP 加上 Docker 引擎使用的 9000 端口在浏览器中打开 Portainer。

注意:如果 Docker 所在主机的系统防火墙开启,需要确保 9000 端口被放行,否则浏览器页面将无法打开。

在我这边,我的 Docker 主机/引擎的 IP 是 192.168.1.16,所以 URL 就是 http://192.168.1.16:9000

Portainer-Login-User-Name-Password

在创建管理员用户时,请确保密码是 8 个字符,同时用户名为 admin,然后点击 “Create User”。

接下来进入如下所示的页面,选中 “Local” 矩形框。

Connect-Portainer-Local-Docker

点击 “Connect”,

可以看到 admin 用户的漂亮首页如下所示,

Portainer-io-Docker-Monitor-Dashboard

现在 Portainer 已经准备好运行和管理你的 Docker 容器了,同时也可用于容器监控。

在 Portainer 中管理容器镜像

Portainer-Endpoints

检查当前的状态,可以看到有两个容器已经在运行了,如果你创建另一个也会立即显示出来。

像下面这样,在命令行中启动一个或两个容器,

root@linuxtechi:~$ sudo docker run --name test -it debian
Unable to find image 'debian:latest' locally
latest: Pulling from library/debian
e79bb959ec00: Pull complete
Digest: sha256:724b0fbbda7fda6372ffed586670573c59e07a48c86d606bab05db118abe0ef5
Status: Downloaded newer image for debian:latest
root@linuxtechi:/#

然后在 Portainer 页面中点击刷新按钮(会出现一条让你确认的消息,点击上面的 “Continue”),就可以像下面高亮显示的一样看到 3 个容器了。

Portainer-io-new-container-image

点击上图中红圈圈出来的 “containers”,下一个页面会显示 “Dashboard Endpoint summary”。

Portainer-io-Docker-Container-Dash

在这个页面中,点击上图高亮和红圈圈出来的 “Containers”,就可以对容器进行监控了。

以简单的方式对容器进行监控

继续上面的步骤,就会出现一个如下所示精致、漂亮的 “Container list” 页面。

Portainer-Container-List

所有的容器都可以在这里进行控制(停止、启动等等)。

1、在这个页面上,停止我们之前启动的 “test” 容器(这是一个我们早先启动的 debian 容器)。

选中此容器前面的复选框,然后点击上面的“Stop”按钮来停止。

Stop-Container-Portainer-io-dashboard

在命令行中,你也会看到这个容器现在已经停止或退出了:

root@linuxtechi:~$ sudo docker container ls -a
CONTAINER ID        IMAGE                 COMMAND             CREATED             STATUS                       PORTS                    NAMES
d45902e717c0        debian                "bash"              21 minutes ago      Exited (0) 49 seconds ago                             test
08b96eddbae9        centos:7              "/bin/bash"         About an hour ago   Exited (137) 9 minutes ago                            mycontainer2
35286de9f2e2        portainer/portainer   "/portainer"        2 hours ago         Up About an hour             0.0.0.0:9000->9000/tcp   compassionate_benz
root@linuxtechi:~$

2、现在,在 Portainer 页面中启动已经停止的两个容器(test 和 mycontainer2)

选中已停止的这两个容器前面的复选框,然后点击 “Start”。

Start-Containers-Portainer-GUI

你会立即看到两条窗口提醒,内容是“容器成功启动”,并且两个容器的状态变为正在运行。

Conatiner-Started-successfully-Portainer-GUI

一步步探索其他多种选项和特性

1、点击高亮的“Images”,你会看到如下页面:

Docker-Container-Images-Portainer-GUI

这是可用的容器列表,其中一些可能没在运行。这些容器可以被导入、导出或者上传到不同的位置,截图如下所示。

Upload-Docker-Container-Image-Portainer-GUI

2、点击高亮的“Volumes”,显示如下页面:

Volume-list-Portainer-io-gui

3、通过下面的操作,可以很容易的添加卷。点击添加卷按钮,出现如下页面,在名称输入框中输入卷名称,例如 “myvol”,然后点击 “Create the volume” 按钮:

Volume-Creation-Portainer-io-gui

新创建的卷如下所示(状态为未使用):

Volume-unused-Portainer-io-gui

结论

通过上面的安装步骤,你可以到配置和使用 Portainer.io 的多种选项是多么简单和精美,它提供了用于构建和监控 Docker 容器的多种功能和选项。如前所述,这个一个非常轻量的工具,因此不会给主机系统增加任何负担。下一组选项将在本系列的第 2 部分中进行探讨。

另请阅读: 用 Portainer.io 来监控和管理 Docker 容器(2)


via: https://www.linuxtechi.com/monitor-manage-docker-containers-portainer-part1/

作者:Shashidhar Soppin 选题:lujun9972 译者:jlztan 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

美土安全部发出罕见紧急警告:Windows 存在“严重”漏洞

其要求所有联邦部门和机构在周一之前立即对任何容易受到 Zerologon 攻击的 Windows 服务器进行补丁,称这对政府网络构成了不可接受的风险。Zerologon 漏洞的严重程度为最高级别 10.0,它可以让攻击者控制脆弱网络上的任何或所有计算机,包括域控制器、管理网络安全的服务器。攻击者不需要窃取或使用任何网络密码就能访问域控制器而只需要在网络上获得一个立足点即可。

来源:cnbeta

拍一拍:不必争论微软软件是否安全,这件事仁者见仁智者见智。但是在是个非常严重的漏洞,希望密切注意。

微软出席 X.Org 开发者大会

今年的虚拟会议 XDC2020 微软不仅仅是银级赞助商,它的开发者在开幕日就做了三次演讲。微软开发者谈论了 WSL 图形架构、WSL 下的 X11/Wayland 应用支持,以及 Mesa Direct3D 12 映射层。微软正在向开发者力推它的 WSL 子系统,目的的吸引开发者使用 Windows 而不是 Linux 发行版作为开发系统。

来源:solidot

拍一拍:微软拥抱开源的一个目的是从 Linux 抢开发者用户回去,你还别说,真有一些会转投的。

NVIDIA C++ 标准库 Libcu++ 现已开源

去年作为 CUDA 10.2 的一部分推出的 Libcu++ 是 CUDA C++ 标准库,它不仅适用于支持 NVIDIA CUDA 的配置,还适用于 CPU。NVIDIA 的 Libcu++ 是从 LLVM 的 Libc++ 标准库中复刻出来的。NVIDIA 之前曾表示要把 Libcu++ 的变化全部推回 LLVM 的 libc++ 中。

来源:cnbeta

拍一拍:虽然本来就该开源的,但是可见 NVIDIA 也需要参与到开源中。

使用 nccm 让你的终端连接 SSH 会话更快、更稳、更轻松。

OpenSSH 很常用,但没有一个知名的连接管理器,因此我开发了 ncurses SSH 连接管理器(nccm)来填补这个重要的空白。 nccm 是一个简单的 SSH 连接管理器,具有非常便于移植的终端界面(就如项目名称所示,使用 ncurses 编写)。最重要的是,它使用起来非常简单。有了 nccm,你可以花费最少的精力和最少的按键连接到你选择的 SSH 会话。

安装 nccm

最快的方式是从它的 Git 仓库克隆该项目:

$ git clone https://github.com/flyingrhinonz/nccm nccm.git

nccm.git/nccm 的文件夹中有两个文件:nccm 自身和 nccm.yml 配置文件。

首先将 nccm 脚本复制到系统目录 /usr/local/bin/ 中并添加执行权限,也可以通过使用install 命令来完成操作:

$ sudo install -m755 nccm –target-directory /usr/local/bin

文件 nccm.yml 可以拷贝到以下任意一个位置,默认从找到的第一个位置获取配置:

  • ~/.config/nccm/nccm.yml
  • ~/.nccm.yml
  • ~/nccm.yml
  • /etc/nccm.yml

nccm 需要在 Python 3 的环境中运行,这在大部分的 Linux 环境是没问题的。大多数 Python 库的依赖包已经作为 Python 3 的一部分存在,但是,有一些 YAML 的依赖包和实用程序是你必须安装的。

如果你没有安装 pip,你可以使用包管理器来安装它。在安装的同时,也请安装 yamllint 应用程序来帮助你验证 nccm.yml 文件。

在 Debian 或类似系统使用 apt 命令:

$ sudo apt install python3-pip yamllint

在 Fedora 或者类似系统使用 dnf 命令:

$ sudo dnf install python3-pip yamllint

PyYAML 也是必须安装的,可以通过使用 pip 来安装:

$ pip3 install --user PyYAML

使用 nccm

开始之前,需要修改 nccm.yml 文件来添加 SSH 连接配置,可以参照示例文件格式化 YAML 文件。仿照示例文件在开头添加连接名称,配置项使用两个空格缩进。不要忘了冒号(:),这是 YAML 的语言的格式。

不要担心你的 SSH 会话信息以何顺序排列,因为 nccm 在程序内提供了排序的方式。

如果修改完成,可以使用 yamllint 来校验配置:

$ yamllint ~/.config/nccm/nccm.yml

如果没有错误信息返回,说明文件的内容格式是正确的,可以进行下面的步骤。

如果 nccm 可以从你的路径中找到并且可以执行,那么输入 nccm 就可以启动 TUI(文本用户界面)了。如果你看到 Python 3 抛出的异常,请检查依赖包是否正确安装,任何异常都应该提到缺少的依赖包。

只要你没有在 YAML 配置文件中更改 ncm_config_control 模式,那么你可以使用以下的键盘按键来控制:

  • Up/Down 方向键 - 移动光标
  • Home/End - 跳转到文件开始和结尾
  • PgUp/PgDn - 以页为单位查看
  • Left/Right 方向键 - 水平滚动
  • TAB - 在文本框之间移动
  • 回车 - 连接选中的 SSH 会话
  • Ctrl-h - 显示帮助菜单
  • Ctrl-q/Ctrl-c - 退出
  • F1-F5! @ # $ % - 按 1-5 列排序

使用 F1F5 来按 1-5 列排序,如果你的设备占用了这些 F1 - F5 键,你可以使用! @ # $ % 来替代。默认界面显示 4 列内容,但我们将用户名和服务器地址作为单独的列来排序,这样我们就有了 5 个排序方式。你也可以通过再次按下排序的按键来逆转排序。在选中的行上按回车可以建立会话。

 title=

Filter 文本框中输入过滤内容,会用输入的内容以“与”的关系来过滤输出内容。这是不区分大小写的,而条目间用空白分隔。在 Conn 部分也是如此,但在这里按回车键可以连接到那个特定的条目编号。

这个工具还有许多功能需要你去发掘,比如专注模式,这些部分留下等待你去探索,也可以查看项目主页或者内置的帮助文档查看更多细节内容。

项目的 YAML 配置文件的文档是完善的,所以你可以查阅修改使 nccm 使用起来更加顺手。nccm 项目是非常希望得到你的反馈的,所以你可以复刻该项目然后添加更多新功能,欢迎大家提出拉取请求。

使用 nccm 来放松连接 SSH 的压力

像我一样,我希望这个工具可以对你有用,感谢能够为开源工作增加自己的贡献,请接受 nccm 作为我对开源项目自由、高效工作所做的贡献。


via: https://opensource.com/article/20/9/ssh-connection-manager

作者:Kenneth Aaron 选题:lujun9972 译者:hom 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

GNOME 下一个版本将从 3.38 跳到 40.0

原计划在 2021 年 3 月释出的下个版本 GNOME 3.40 将重命名为 GNOME 40。在第一个稳定版 GNOME 40.0 发布之后,随后的 bug 修正版本将在小数点后加 1,如 40.1、40.2、 40.3...再下一个版本则是 GNOME 41。主要原因是在可预见的未来开发者不会像 GNOME 2 到 GNOME 3 那样改变核心的技术,因此大的版本号也就不会随之增加。所以开发者决定将 3.40 直接改名为 GNOME 40,而如果改名为 GNOME 4.0 则可能会带来意想不到的暗示。

来源:solidot

拍一拍:又一轮飙版本号竞赛开始——反正特性不够版本号凑。开源技术届像 0.01 这样的微小版本号传统在逐渐丧失。

GitHub CLI 1.0 发布

GitHub 的命令行工具 CLI 发布了 1.0 正式版本。GitHub CLI 允许开发者在终端内直接操作 GitHub 的各项功能,如拉取请求和议题。它还允许开发者为任意命令创建别名,能直接访问 GitHub API。

来源:solidot

拍一拍:没有命令行的 GitHub 显得不够极客——当然,其实命令行有助于提供更多的自动化。

用了 21 年,Thunderbird 78.2 正式加入对 OpenPGP 的支持

21 年前,用户向 Mozilla 递交了功能请求,希望加入对 PGP/OpenPGP 的支持,当时电邮客户端 Thunderbird 还不存在。在这之前,用户在 Thunderbird 中加密邮件通常需要使用扩展 Enigmai。随着 v78.2.1 的发布,Thunderbird 正式默认启用了对 OpenPGP 的支持。

来源:solidot

拍一拍:虽然 PGP/OpenPGP 可以有效的保护电子邮件安全,但是一直叫好不叫座。

如果你格外谨慎,会使用最好的认证方法来保护你的在线帐户的安全,你可能知道 Yubico。他们制作的硬件认证安全密钥可以取代双因素认证,并摆脱在线账户的密码认证系统。

基本上,你只需将安全密钥插在电脑上,或者使用智能手机上的 NFC 来解锁访问账户。这样一来,你的认证方式就会完全保持离线状态。

当然,你可以随时使用 Linux 中好用的密码管理器。但如果你拥有一家公司,或为公司工作,或者只是对自己的隐私和安全格外谨慎,想增加一层额外的安全保护,这些硬件安全密钥可能值得一试。这些设备最近得到的进一步普及。

Yubico 的最新产品 YubiKey 5C NFC 可能令人印象深刻,因为它既可以作为 Type-C 的 USB 密钥使用,也可以作为 NFC 使用(只要用密钥碰触你的设备)。

下面,让我们来看看这款安全密钥的概况。

(LCTT 译注:请注意本文中的购买连接是原文作者的受益链接,如果你对此担心,请阅读其受益政策。)

Yubico 5C NFC:概述

YubiKey 5C NFC 是最新的产品,它同时使用 USB-C 和 NFC。因此,你可以轻松地将它插入 Windows、macOS 和 Linux 电脑。除了电脑,你还可以将其与 Android 或 iOS 智能手机或平板电脑配合使用。

不仅仅局限于 USB-C 和 NFC 的支持(这是件好事),它也恰好是世界上第一个支持智能卡的多协议安全密钥。

对于普通消费者来说,硬件安全密钥并不那么常见,因为它的成本很高。但在疫情流行的过程中,随着远程办公的兴起,一个更安全的认证系统肯定会派上用场。

以下是 Yubico 在其新闻稿中提到的内容:

Yubico 首席产品官 Guido Appenzeller 表示:“如今人们工作和上网的方式与几年前大不相同,尤其是在过去几个月内。用户不再仅仅被一种设备或服务所束缚,也不再希望受限于此。这就是为什么 YubiKey 5C NFC 是我们最受欢迎的安全密钥之一。它与大多数现代电脑和手机兼容,并可以在一系列传统和现代应用中良好运行。归根结底,我们的客户渴望的是无论如何都能“正常工作”的安全性。”

YubiKey 5C NFC 支持的协议有 FIDO2、WebAuthn、FIDO U2F、PIV(智能卡)、OATH-HOTP 和 OATH-TOTP (基于哈希和时间的一次性密码)、OpenPGP、YubiOTP 和挑战应答认证。

考虑到所有这些协议,你可以轻松地保护任何支持硬件认证的在线帐户,同时还可以访问身份访问管理 (IAM) 解决方案。因此,这对个人用户和企业来说都是一个很好的选择。

定价和渠道

YubiKey 5C NFC 的价格为 55 美元。你可以直接从他们的在线商店订购,或者从你所在国家的任何授权经销商处购买。花费可能也会根据运输费用的不同而有所不同,但对于那些想要为他们的在线账户提供最佳安全级别的用户而言,55 美元似乎是个不错的价格。

值得注意的是,如果你订购两个以上的 YubiKeys,你可以获得批量折扣。

总结

无论你是想保护你的云存储帐户还是其他在线帐户的安全,如果你不介意花点钱来保护你的数据安全,Yubico 的最新产品是值得一试的。

你是否使用过 YubiKey 或其他安全密钥,如 LibremKey 等?你对它的体验如何?你认为这些设备值得花钱吗?


via: https://itsfoss.com/yubikey-5c-nfc/

作者:Ankush Das 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

在本教程中,你将学习如何在 Ubuntu 中从终端连接到无线网络。如果你在使用 Ubuntu 服务器时,无法访问常规的桌面环境,这将对你非常有帮助。

我的家用电脑主要使用桌面 Linux。我也有多台 Linux 服务器用于托管网站以及开源软件,如 NextcloudDiscourse、Ghost、Rocket Chat 等。

我可以使用 Linode 在云端几分钟内快速部署 Linux 服务器。但最近,我在我的树莓派上安装了 Ubuntu 服务器。这是我第一次在物理设备上安装服务器,我不得不做一些额外的事情来通过命令行将 Ubuntu 服务器连接到 WiFi。

在本教程中,我将展示在 Ubuntu Linux 中使用终端连接到 WiFi 的步骤。你应该:

  • 不要害怕使用终端编辑文件。
  • 知道 wifi 接入点名称 (SSID) 和密码。

在 Ubuntu 中从终端连接到 WiFi

当你使用 Ubuntu 桌面时,连接到 WiFi 是很容易的,因为你有图形用户界面,可以很容易地做到这一点。但当你使用 Ubuntu 服务器时就不一样了,因为你只能使用命令行。

Ubuntu 使用 Netplan 工具来轻松配置网络。在 Netplan 中,你可以创建一个包含网络接口描述的 YAML 文件,然后在 netplan 命令行工具的帮助下,生成所有需要的配置。

让我们看看如何使用 Netplan 从终端连接到无线网络。

步骤 1:确定你的无线网络接口名称

有几种方法可以识别你的网络接口名称。你可以使用 ip 命令、过时的 ipconfig 命令或查看这个文件:

ls /sys/class/net

这应该会展示所有可用的网络接口(以太网、WiFi 和环回)。无线网络接口名称以 w 开头,通常命名类似 wlanXwlpxyz

[email protected]:~$ ls /sys/class/net
eth0 lo wlan0

记下这个接口名。你将在下一步使用它。

步骤 2:编辑 Netplan 配置文件中的 wifi 接口详细信息

Netplan 配置文件在 /etc/netplan 目录下。如果你查看这个目录的内容,你应该看到类似 01-network-manager-all.yml50-cloud-init.yaml 等文件。

如果是 Ubuntu 服务器,你应该有 50-cloud-init.yaml 文件。如果是桌面计算机,应该是 01-network-manager-all.yml 文件。

Linux 桌面计算机的 Network Manager 允许你选择一个无线网络。你可以在它的配置中硬编码写入 WiFi 接入点。这可以在自动掉线的情况下(比如挂起)时帮助到你。

不管是哪个文件,都可以打开编辑。我希望你对 Nano 编辑器有一点熟悉,因为 Ubuntu 预装了它。

sudo nano /etc/netplan/50-cloud-init.yaml

YAML 文件对空格、缩进和对齐方式非常敏感。不要使用制表符,在看到缩进的地方使用 4 个空格(或 2 个,以 YAML 文件中已经使用的为准)代替。

基本上,你需要添加以下几行,引号中是接入点名称(SSID) 和密码(通常):

wifis:
    wlan0:
        dhcp4: true
        optional: true
        access-points:
            "SSID_name":
                password: "WiFi_password"

再说一次,保持我所展示的对齐方式,否则 YAML 文件不能被解析,它会抛出一个错误。

你的完整配置文件可能是这样的:

# This file is generated from information provided by the datasource. Changes
# to it will not persist across an instance reboot. To disable cloud-init's
# network configuration capabilities, write a file
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
# network: {config: disabled}
network:
    ethernets:
        eth0:
            dhcp4: true
            optional: true
    version: 2
    wifis:
        wlan0:
            dhcp4: true
            optional: true
            access-points:
                "SSID_name":
                    password: "WiFi_password"

我觉得很奇怪,尽管有消息说更改不会在实例重启后保留,但它仍然可以工作。

不管怎样,用这个命令生成配置:

sudo netplan generate

现在应用它:

sudo netplan apply

如果你幸运的话,你应该连上网络。尝试 ping 一个网站或运行 apt 更新命令。

然而,事情可能不会那么顺利,你可能会看到一些错误。如果是这种情况,请尝试一些额外的步骤。

可能的故障排除

当你使用 netplan apply 命令时,你有可能在输出中看到类似这样的错误。

Failed to start netplan-wpa-wlan0.service: Unit netplan-wpa-wlan0.service not found.
Traceback (most recent call last):
  File "/usr/sbin/netplan", line 23, in <module>
    netplan.main()
  File "/usr/share/netplan/netplan/cli/core.py", line 50, in main
    self.run_command()
  File "/usr/share/netplan/netplan/cli/utils.py", line 179, in run_command
    self.func()
  File "/usr/share/netplan/netplan/cli/commands/apply.py", line 46, in run
    self.run_command()
  File "/usr/share/netplan/netplan/cli/utils.py", line 179, in run_command
    self.func()
  File "/usr/share/netplan/netplan/cli/commands/apply.py", line 173, in command_apply
    utils.systemctl_networkd('start', sync=sync, extra_services=netplan_wpa)
  File "/usr/share/netplan/netplan/cli/utils.py", line 86, in systemctl_networkd
    subprocess.check_call(command)
  File "/usr/lib/python3.8/subprocess.py", line 364, in check_call
    raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['systemctl', 'start', '--no-block', 'systemd-networkd.service', 'netplan-wpa-wlan0.service']' returned non-zero exit status 5.

可能是 wpa_supplicant 服务没有运行。运行这个命令:

sudo systemctl start wpa_supplicant

再次运行 netplan apply。如果它能解决这个问题,那就太好了。否则,使用下面的命令关闭 Ubuntu 系统

shutdown now

重新启动 Ubuntu 系统,登录并再次生成和运行 netplan apply

sudo netplan generate
sudo netplan apply

现在可能会显示警告(而不是错误)。这是警告而不是错误。我检查了正在运行的 systemd 服务,发现 netplan-wpa-wlan0.service 已经在运行了。可能是因为它已经在运行了,而且 netplan apply 更新了配置文件(即使没有任何改变),所以显示了警告。

Warning: The unit file, source configuration file or drop-ins of netplan-wpa-wlan0.service changed on disk. Run 'systemctl daemon-reload' to reload units.

这并不重要,你可以通过运行 apt update 来检查网络是否已经正常工作。

我希望你能够在本教程的帮助下,在 Ubuntu 中使用命令行连接到 WiFi。如果你仍然遇到困难,请在评论区告诉我。


via: https://itsfoss.com/connect-wifi-terminal-ubuntu/

作者:Abhishek Prakash 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出