• 使用WPA Supplicant从Ubuntu18.04/20.04上的终端连接到Wi-Fi

    在本教程中,我们将学习如何使用wpa_supplicant从Ubuntu 18.04/20.04服务器和桌面上的命令行连接到Wi-Fi网络。在现代家庭无线网络中,通信由WPA-PSK(预共享密钥)保护,而WPA Enterprise是为企业网络设计的。WPA-PSK也称为WPA Personal。wpa_supplicant是wpa supplicant组件的一个实现。无线局域网中的请求者是安装在最终用户计算机上的客户端软件,需要通过身份验证才能加入网络。 请注意,在连接到Wi-Fi之前,您需要安装wpa_supplicant软件,因此您需要先连接到有线以太网,这只需要一次。如果你不喜欢这种方法,请不要生我的气。也许有一天Ubuntu会以干净的方式安装wpa_supplicant。 第一步:找到你的无线接口和无线网络的名称 运行iwconfig命令查找无线接口的名称。 iwconfig wlan0曾经是没有Systemd的Linux系统上无线网络接口的通用名称。因为Ubuntu使用Systemd,你会发现你的无线网络接口被命名为类似wlp4s0的东西。您还可以看到,它现在与任何接入点都没有关联。 如果没有显示无线接口,可能需要使用以下命令将其打开。 sudo ifconfig wlp4s0启动 然后用下面的命令扫描附近的网络,找到你的无线网络名。将wlp4s0替换为您自己的无线接口名称。ESSID是网络名称标识符。 sudo iwlist wlp4s0扫描| grep ESSID 第2步:使用WPA_Supplicant连接到Wi-Fi网络 现在从默认的软件存储库在Ubuntu 18.04/20.04上安装wpa_supplicant。 sudo apt安装WPA应用程序 我们需要创建一个名为wpa_supplicant的文件。使用wpa_密码短语实用程序进行配置。wpa_恳求者。conf是描述用户希望计算机连接到的所有网络的配置文件。运行以下命令创建此文件。用自己的密码替换ESSID和Wi-Fi密码。 wpa_密码说出你的ESSID你的wifi密码说出| sudo tee/etc/wpa_恳求者。形态 请注意,在上面的截图中,我用双引号将我的ESSID括起来,因为我的ESSID包含空格。 wpa_passphrase命令的输出将通过管道传输到tee,然后写入/etc/wpa_请求者。conf文件。现在使用以下命令将无线网卡连接到无线接入点。 sudo wpa_suplicant-c/etc/wpa_suplicant。形态-i wlp4s0 以下输出表示您的无线网卡已成功连接到接入点。 已成功初始化wpa_请求者wlp4s0:SME:尝试使用c5:4a:21:53:ac:eb(SSID='LinuxBabe.Com网络'freq=2437 MHz)wlp4s0:尝试与c5:4a:21:53:ac:eb(SSID='LinuxBabe.Com网络'freq=2437 MHz)进行身份验证wlp4s0:与c5:4a:21:53:ac:eb关联:wlp4s0:CTRL-EVENT-SUBNET-STATUS-UPDATE STATUS=0 wlp4s0:wpa:密钥协商已完成c5:21:53:eb[PTK=CCMP GTK=CCMP]wlp4s0:CTRL-EVENT-CONNECTED-连接到c5:4a:21:53:ac:eb已完成[id=0 id_str=] 请注意,如果您使用的是Ubuntu desktop edition,则需要使用以下命令停止Network Manager,否则在使用wpa_supplicant时会导致连接问题。 sudo systemctl stop NetworkManager 并通过执行以下命令禁用NetworkManager在启动时自动启动。 sudo systemctl禁用NetworkManager等待联机NetworkManager调度程序NetworkManager 默认情况下,wpa_supplicant在前台运行。如果连接完成,则打开另一个终端窗口并运行 iwconfig 您可以看到,无线接口现在与接入点相关联。 您可以按CTRL+C停止当前的wpa_请求进程,并通过添加-B标志在后台运行它。 sudo wpa_suplicant-B-c/etc/wpa_suplicant。形态-i wlp4s0 虽然我们已经通过身份验证并连接到无线网络,但我们还没有IP地址。要从DHCP服务器获取专用IP地址,请使用以下命令: sudo DHP客户端wlp4s0 现在,您的无线接口有一个专用IP地址,可以通过以下方式显示: ip地址显示wlp4s0 现在你可以上网了。要释放专用IP地址,请运行 sudo DHS客户端wlp4s0-r 连接到隐藏的无线网络 如果您的无线路由器没有广播ESSID,那么您需要在/etc/wpa_suplicant中添加以下行。conf文件。 扫描_ssid=1 如下所示: 网络={ssid=“LinuxBabe.Com network”#psk=“12345qwert”psk=68add4c5fee7dc3d0dac810f89b805d6d147c01e281f07f475a3e0195扫描_ssid=1} 步骤3:启动时自动连接 要在启动时自动连接到无线网络,我们需要编辑wpa_请求。服务文件。最好将文件从/lib/systemd/system/directory复制到/etc/systemd/system/directory,然后编辑文件内容,因为我们不希望更新版本的wpa_supplicant覆盖我们的修改。 sudo cp/lib/systemd/system/wpa_恳求者。服务/etc/systemd/system/wpa_请求者。服务 使用命令行文本编辑器(如Nano)编辑文件。 sudo nano/etc/systemd/system/wpa_supliciant。服务 找到下面这行。 ExecStart=/sbin/wpa_-supplicant-u-s-O/run/wpa_-supplicant 将其更改为以下内容。在这里,我们向ExecStart命令添加了配置文件和无线接口名称。 ExecStart=/sbin/wpa_-suplicant-u-s-c/etc/wpa_-suplicant。形态-i wlp4s0 当检测到故障时,建议始终尝试重新启动wpa_supplicant。在ExecStart行的右下方添加以下内容。 重启=始终 如果可以在该文件中找到以下行,请将其注释掉(在行首添加#字符)。 别名=dbus fi。w1。wpa_恳求者1。服务 保存并关闭文件。(要在Nano文本编辑器中保存文件,请按Ctrl+O,然后按Enter确认。要退出,请按Ctrl+X。)然后重新加载systemd。 sudo systemctl后台程序重新加载 启用wpa_请求服务在启动时启动。 sudo systemctl启用wpa_请求者。服务 我们还需要在启动时启动dhclient,以便从DHCP服务器获取私有IP地址。这可以通过为dhclient创建systemd服务单元来实现。 sudo nano/etc/systemd/system/dhclient。服务 将以下文本放入文件中。 [Unit]Description=DHCP客户端Before=网络。目标后=wpa_恳求者。服务[service]Type=forking ExecStart=/sbin/dhclient wlp4s0-v ExecStop=/sbin/dhclient wlp4s0-r Restart=always[Install]WantedBy=multi-user。目标 保存并关闭文件。然后启用此服务。 sudo systemctl启用dhclient。服务 如何获取静态IP地址 如果你想获得一个静态IP地址,那么你需要禁用dhclient。服务 sudo systemctl禁用dhclient。服务 我们需要使用netplan在Ubuntu 18.04/20.04上配置静态IP地址。在/etc/netplan/下创建一个配置文件。 sudo nano/etc/netplan/10 wifi。亚马尔 将以下行添加到此文件。用首选IP地址替换192.168.0.102。请小心压痕。额外的空间将使配置无效。 网络:以太网:wlp4s0:dhcp4:无地址:[192.168.0.102/24]网关4:192.168.0.1版本:2 保存并关闭文件。然后应用配置。 sudo网络计划申请 如果--debug选项不能按预期工作,也可以启用它。 sudo netplan--调试应用 如果还有别的。yaml文件位于/etc/netplan/目录下,然后netplan将自动合并来自不同文件的配置。netplan使用systemd networkd作为后端网络渲染器。建议配置wpa_请求程序。服务在systemd networkd之前运行。服务,因此系统将首先与Wi-Fi接入点关联,然后获取专用IP地址。 sudo nano/etc/systemd/system/wpa_supliciant。服务 找到下面这行。 之前=网络。目标 将其更改为: 之前=网络。目标系统网络。服务 保存并关闭文件。 获取静态IP地址的另一种方法是登录路由器的管理界面,并将静态IP分配给无线网卡的MAC地址(如果路由器支持此功能)。 使用主机名访问Ubuntu上的服务 实际上,你不必为你的Ubuntu设备获取一个静态IP地址。Ubuntu可以使用MDN(多播DNS)向本地网络宣布其主机名,客户端可以使用该主机名访问Ubuntu设备上的服务。这个主机名总是可以解析为Ubuntu设备的IP地址,即使IP地址发生了变化。 为了使用MDN,您需要安装avahi守护程序,这是MDN/DNS-SD的开源实现。 sudo apt安装avahi守护进程 启动服务。 sudo systemctl启动avahi守护程序 启动时启用自动启动。 sudo systemctl启用avahi守护程序 Avahi守护进程监听UDP 5353,因此需要在防火墙中打开此端口。如果使用UFW,则运行以下命令。 sudo ufw允许5353/udp 然后你应该用hostnamectl命令为你的Ubuntu框设置一个唯一的主机名。将ubuntubox替换为首选主机名,本地网络中的其他设备不应使用该主机名。 sudo hostnamectl设置主机名ubuntubox 现在重新启动avahi守护进程。 sudo systemctl重启avahi守护进程 如果你和 systemctl状态avahi守护程序 您可以看到mDNS主机名,以结尾。本地域。 在客户端计算机上,还需要安装mDNS/DNS-SD软件。 Linux用户应该安装avahi守护程序。 Windows用户需要通过安装Bonjour打印服务或安装iTunes来启用Bonjour服务。 在macOS上,Bonjour是预先安装的。 现在,您可以使用ubuntubox访问服务。本地主机名,无需检查和键入IP地址。 解除Raspberry Pi上的Wifi阻塞 默认情况下,用于Raspberry Pi的Ubuntu ARM操作系统会阻止无线接口。您需要使用以下方法解除阻止: sudo rfkill解锁wifi 要在启动时解除阻止,请创建systemd服务单元。 sudo nano/etc/systemd/system/unblock wifi。服务 添加以下行。 [Unit]Description=RFKill Unblock WiFi Devices Requires=wpa_suplicant。之后的服务=wpa_请求者。服务[service]Type=oneshot ExecStart=/usr/sbin/rfkill unblock wifi ExecStop=RemainAfterExit=yes[Install]WantedBy=multi-user。目标 保存并关闭文件。启动时启用自动启动。 sudo systemctl启用解锁wifi 我发现wifi被解锁了。服务应该在wpa_请求者之后运行。服务启动,否则无法解锁wifi。请注意,如果您安装了桌面环境,可能有一个网络管理器正在运行,可能会干扰连接。你需要禁用它。例如,我在Raspberry Pi(sudo apt install lubuntu desktop)上使用轻量级LXQT桌面环境,需要禁用connman。服务和网络经理。服务 sudo systemctl禁用connman。服务网络经理。服务 推荐阅读 如何在Linux上使用Systemd–管理服务、运行级别和日志 多个Wi-Fi网络 /etc/wpa_恳求者。配置文件可以包括多个Wi-Fi网络。wpa_supplicant将根据配置文件中网络块的顺序、网络安全级别和信号强度自动选择最佳网络。 要添加第二个Wi-Fi网络,请运行 wpa_密码说出你的ESSID你的wifi密码说出| sudo tee-a/etc/wpa_恳求者。形态 请注意,您需要在tee命令中使用-a选项,该命令会将新的Wifi网络附加到文件中,而不是删除原始内容。 无线网络安全 请勿在Wi-Fi路由器中使用WPA2 TKIP或WPA2 TKIP+AES作为加密方法。TKIP不再被认为是安全的。您可以使用WPA2-AES作为加密方法。 收尾 我希望本教程能帮助您通过WPA Supplicant命令行将Ubuntu 18.04/20.04连接到Wi-Fi网络。和往常一样,如果你觉得这篇文章很有用,那么订阅我们的免费时事通讯以获得更多提示和窍门?

    2022.03.23 浏览:257