云网牛站
所在位置:首页 > Linux教程 > 使用WPA Supplicant在Ubuntu 18.04/19.04上从终端连接到Wi-Fi的方法

使用WPA Supplicant在Ubuntu 18.04/19.04上从终端连接到Wi-Fi的方法

2019-08-27 16:03:16作者:叶云稿源:云网牛站

本文介绍使用wpa_supplicant从Ubuntu 18.04/19.04服务器/桌面上的命令行连接到Wi-Fi网络,在现代家庭无线网络中,通信使用WPA-PSK(预共享密钥)进行保护,而WPA-Enterprise则是为企业网络设计的,WPA-PSK也称为WPA-Personal,wpa_supplicant是WPA请求者组件的实现,无线LAN中的请求方是安装在最终用户计算机上的客户端软件,需要进行身份验证才能加入网络。

 

一、在Ubuntu 18.04/19.04上启用无线卡

首先,确保你的无线网卡已启用,可以使用rfkill:

sudo apt install rfkill

要检查无线网卡的状态,请运行:

rfkill list

使用WPA Supplicant在Ubuntu 18.04/19.04上从终端连接到Wi-Fi的方法

如你所见,我的无线卡被软件阻止,这意味着我的Ubuntu OS上禁用了无线功能,要取消阻止它,请使用以下命令:

rfkill unblock wifi

 

二、找到无线接口和无线网络的名称

运行iwconfig命令以查找无线接口的名称。

iwconfig

wlan0曾经是没有Systemd的Linux系统上无线网络接口的通用名称,因为Ubuntu使用Systemd(参考:Systemd入门教程),所以你会发现你的无线网络接口的名称类似于wlp4s0,还可以看到它现在与任何接入点都没有关联:

使用WPA Supplicant在Ubuntu 18.04/19.04上从终端连接到Wi-Fi的方法

然后使用以下命令扫描附近的网络,找到你的无线网络名称,用你自己的无线接口名称替换wlp4s0,ESSID是网络名称标识符:

sudo iwlist wlp4s0 scan | grep ESSID

使用WPA Supplicant在Ubuntu 18.04/19.04上从终端连接到Wi-Fi的方法

 

三、使用WPA_Supplicant连接到Wi-Fi网络

现在从默认软件存储库在Ubuntu 18.04/19.04上安装wpa_supplicant:

sudo apt install wpasupplicant

我们需要使用wpa_passphrase实用程序创建一个名为wpa_supplicant.conf的文件,wpa_supplicant.conf是描述用户希望计算机连接到的所有网络的配置文件,运行以下命令以创建此文件,请注意用你自己的密码替换ESSID和Wi-Fi密码:

wpa_passphrase your-ESSID your-wifi-passphrase | sudo tee /etc/wpa_supplicant.conf

使用WPA Supplicant在Ubuntu 18.04/19.04上从终端连接到Wi-Fi的方法

wpa_passphrase命令的输出将通过管道发送到tee,然后写入/etc/wpa_supplicant.conf文件,现在使用以下命令将无线卡连接到无线接入点:

sudo wpa_supplicant -c /etc/wpa_supplicant.conf -i wlp4s0

以下输出表明你的无线卡已成功连接到接入点:

Successfully initialized wpa_supplicant

wlp4s0: SME: Trying to authenticate with c5:4a:21:53:ac:eb (SSID='LinuxBabe.Com Network' freq=2437 MHz)

wlp4s0: Trying to associate with c5:4a:21:53:ac:eb (SSID='LinuxBabe.Com Network' freq=2437 MHz)

wlp4s0: Associated with c5:4a:21:53:ac:eb

wlp4s0: CTRL-EVENT-SUBNET-STATUS-UPDATE status=0

wlp4s0: WPA: Key negotiation completed with c5:4a:21:53:ac:eb [PTK=CCMP GTK=CCMP]

wlp4s0: CTRL-EVENT-CONNECTED - Connection to c5:4a:21:53:ac:eb completed [id=0 id_str=]

请注意,如果你使用的是Ubuntu桌面版,则需要使用以下命令停止网络管理器,否则在使用wpa_supplicant时会导致连接问题:

sudo systemctl stop NetworkManager

知识扩展:使用NetworkManager随机化MAC地址的方法

并通过执行以下命令在启动时禁用NeworkManager自动启动:

sudo systemctl disable NetworkManager

默认情况下,wpa_supplicant在前台运行,如果连接完成,则打开另一个终端窗口并运行:

iwconfig

你可以看到无线接口现在与接入点相关联:

使用WPA Supplicant在Ubuntu 18.04/19.04上从终端连接到Wi-Fi的方法

你可以按CTRL+C来停止当前的wpa_supplicant进程并通过添加-B选项在后台运行它:

sudo wpa_supplicant -B -c /etc/wpa_supplicant.conf -i wlp4s0

虽然我们已经过身份验证并连接到无线网络,但我们还没有IP地址,要从DHCP服务器获取专用IP地址,请使用以下命令:

sudo dhclient wlp4s0

现在你的无线接口有一个私有IP地址,可以显示如下:

ip addr show wlp4s0

使用WPA Supplicant在Ubuntu 18.04/19.04上从终端连接到Wi-Fi的方法

现在你可以访问Internet,要释放私有IP地址,请运行:

sudo dhclient wlp4s0 -r

附1:连接到隐藏的无线网络

如果你的无线路由器未广播ESSID,则需要在/etc/wpa_supplicant.conf文件中添加以下行:

scan_ssid=1

如下所示:

使用WPA Supplicant在Ubuntu 18.04/19.04上从终端连接到Wi-Fi的方法

附2:启动时自动连接

要在引导时自动连接到无线网络,我们需要编辑wpa_supplicant.service文件,将文件从/lib/ systemd/system/目录复制到/etc/systemd/system/目录,然后编辑文件内容,因为我们不希望更新版本的wpa_supplicant覆盖我们的修改:

sudo cp /lib/systemd/system/wpa_supplicant.service /etc/systemd/system/wpa_supplicant.service

使用命令行文本编辑器(如Nano)编辑文件:

sudo nano /etc/systemd/system/wpa_supplicant.service

找到以下行:

ExecStart=/sbin/wpa_supplicant -u -s -O /run/wpa_supplicant

将其更改为以下内容,在这里,我们将配置文件和无线接口名称添加到ExecStart命令:

ExecStart=/sbin/wpa_supplicant -u -s -c /etc/wpa_supplicant.conf -i wlp4s0

保存并关闭文件(要在Nano文本编辑器中保存文件,请按Ctrl+O,然后按Enter确认,要退出,请按Ctrl+X),然后启用wpa_supplicant服务以在启动时启动:

sudo systemctl enable wpa_supplicant.service

我们还需要在启动时启动dhclient以从DHCP服务器获取私有IP地址,这可以通过为dhclient创建systemd服务单元来实现:

sudo nano /etc/systemd/system/dhclient.service

将以下文本放入文件中:

[Unit]

Description= DHCP Client

Before=network.target

After=wpa_supplicant.service

[Service]

Type=simple

ExecStart=/sbin/dhclient wlp4s0

[Install]

WantedBy=multi-user.target

保存并关闭文件,然后启用此服务:

sudo systemctl enable dhclient.service

至此,从命令行用WPU Supplicant连接到Ubuntu 18.04/19.04的Wi-Fi网络操作全部完成。

 

相关主题

使用Reaver破解开启了WPS功能的wifi密码(wpa/wpa2)

精选文章
热门文章