如何在 Linux 终端中连接 WiFi?

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

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

[[342783]]

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

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

不要害怕使用终端编辑文件。
知道 wifi 接入点名称 (SSID) 和密码。
在 Ubuntu 中从终端连接到 WiFi
当你使用 Ubuntu 桌面时,连接到 WiFi 是很容易的,因为你有图形用户界面,可以很容易地做到这一点。但当你使用 Ubuntu 服务器时就不一样了,因为你只能使用命令行。

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

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

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

  1. ls /sys/class/net 

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

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

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

步骤 2:编辑 Netplan 配置文件中的 wifi 接口详细信息
Netplan 配置文件在 /etc/netplan 目录下。如果你查看这个目录的内容,你应该看到类似 01-network-manager-all.yml 或 50-cloud-init.yaml 等文件。

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

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

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

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

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

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

  1. wifis: 
  2.     wlan0: 
  3.         dhcp4: true 
  4.         optional: true 
  5.         access-points: 
  6.             "SSID_name"
  7.                 password"WiFi_password" 

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

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

  1. # This file is generated from information provided by the datasource. Changes 
  2. to it will not persist across an instance reboot. To disable cloud-init's 
  3. # network configuration capabilities, write a file 
  4. # /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following: 
  5. # network: {config: disabled} 
  6. network: 
  7.     ethernets: 
  8.         eth0: 
  9.             dhcp4: true 
  10.             optional: true 
  11.     version: 2 
  12.     wifis: 
  13.         wlan0: 
  14.             dhcp4: true 
  15.             optional: true 
  16.             access-points: 
  17.                 "SSID_name"
  18.                     password"WiFi_password" 

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

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

  1. sudo netplan generate 

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

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

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

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

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

  1. sudo systemctl start wpa_supplicant 

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

  1. shutdown now 

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

  1. sudo netplan generate 
  2. sudo netplan apply 

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

  1. 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。

 

责任编辑:姜华 来源: Linux中国
相关推荐

2016-11-09 09:48:03

Arch Linux设定WiFi网络

2018-05-29 09:33:55

Linux终端显示图片

2020-05-17 16:12:03

Linux终端命令

2021-09-14 12:34:33

LinuxLinux终端

2020-12-24 10:00:35

Linux查看图像

2015-11-24 13:27:35

Linuxcool-retro-复古终端

2018-04-19 09:23:07

Linux网速测试命令行工具

2020-02-18 19:02:03

UbuntuLinux终端

2023-03-07 10:50:42

Linux命令系统

2020-03-02 14:25:17

Ubuntu终端Linux

2016-10-20 09:17:23

LinuxU盘驱动器

2016-07-18 14:49:22

操作系统Linux终端操作

2022-08-08 09:34:33

Linux串行控制台

2014-05-12 10:57:41

TermRecord终端会话

2018-01-24 16:30:43

Linux命令Wifi

2019-08-06 09:16:18

Windows 10WiFi网络Windows

2015-01-27 23:21:53

Linux终端

2015-08-24 15:33:54

Linux 终端公有IP

2020-12-13 14:00:39

LinuxJSON

2022-09-24 19:35:15

LinuxWiFi
点赞
收藏

51CTO技术栈公众号