如何在 Ubuntu Linux 中从终端连接到 WiFi

在本教程中,您将学习如何在 Ubuntu 中从终端连接到无线网络。 如果您在无法访问常规桌面环境的情况下使用 Ubuntu 服务器,这将特别有用。

我主要在家用电脑上使用桌面 Linux。 我还有多个 Linux 服务器用于托管它的 FOSS 和相关网站以及 Nextcloud 等开源软件, 话语,幽灵,火箭聊天等。

我使用 Linode 在几分钟内在云中快速部署 Linux 服务器。 但最近,我在我的 Raspberry Pi 上安装了 Ubuntu 服务器。 这是我第一次在物理设备上安装服务器,我必须做一些额外的事情才能通过命令行将 Ubuntu 服务器连接到 WiFi。

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

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

在 Ubuntu 中从终端连接到 WiFi

当您使用 Ubuntu 桌面时很容易,因为您有 GUI 可以轻松做到这一点。 当您使用 Ubuntu 服务器并仅限于命令行时,情况就不一样了。

Ubuntu 使用 网络计划 用于轻松配置网络的实用程序。 在 Netplan 中,您创建带有网络接口描述的 YAML 文件,并在 netplan 命令行工具的帮助下生成所有必需的配置。

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

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

有多种方法可以识别您的网络接口名称。 您可以使用 ip 命令、不推荐使用的 ipconfig 命令或检查此文件:

ls /sys/class/net

这应该为您提供所有可用的网络接口(以太网、wifi 和环回)。 无线网络接口名称以“w”开头,通常类似于 wlanX、wlpxyz 的名称。

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

记下此接口名称。 您将在下一步中使用它。

第 2 步:使用 wifi 接口详细信息编辑 Netplan 配置文件

Netplan 配置文件位于 /etc/netplan 目录中。 如果您检查此目录的内容,您应该会看到类似 01-network-manager-all.yml 或 50-cloud-init.yaml 的文件。

如果是 Ubuntu 服务器,你应该有 cloud-init 文件。 对于台式机,它应该是网络管理器文件。 这是 Ubuntu 桌面与 Ubuntu 服务器不同的几种方式之一。

Linux 桌面上的网络管理器允许您选择无线网络。 您可以在其配置中对 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 update 命令。

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

可能的故障排除

当您使用 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:

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。 如果您仍然遇到问题,请在评论部分告诉我。