本文介绍使用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
如你所见,我的无线卡被软件阻止,这意味着我的Ubuntu OS上禁用了无线功能,要取消阻止它,请使用以下命令: rfkill unblock wifi
二、找到无线接口和无线网络的名称 运行iwconfig命令以查找无线接口的名称。 iwconfig wlan0曾经是没有Systemd的Linux系统上无线网络接口的通用名称,因为Ubuntu使用Systemd(参考:Systemd入门教程),所以你会发现你的无线网络接口的名称类似于wlp4s0,还可以看到它现在与任何接入点都没有关联:
然后使用以下命令扫描附近的网络,找到你的无线网络名称,用你自己的无线接口名称替换wlp4s0,ESSID是网络名称标识符: sudo iwlist wlp4s0 scan | grep ESSID
三、使用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_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 你可以看到无线接口现在与接入点相关联:
你可以按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
现在你可以访问Internet,要释放私有IP地址,请运行: sudo dhclient wlp4s0 -r 附1:连接到隐藏的无线网络 如果你的无线路由器未广播ESSID,则需要在/etc/wpa_supplicant.conf文件中添加以下行: scan_ssid=1 如下所示:
附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网络操作全部完成。
相关主题 |