使用 WPA 請求者從 Ubuntu 18.04/20.04 中的終端連接到 Wi-Fi


在本教程中,您將學習如何在 Ubuntu 18.04/20.04 服務器和桌面上使用命令行連接到 Wi-Fi 網絡。 wpa_請求者現代家庭無線網絡使用 WPA-PSK(預共享密鑰)而不是為企業網絡設計的 WPA-Enterprise 來保護通信。 WPA-PSK 也稱為 WPA-個人。 wpa_請求者 WPA 請求者組件的實現。無線 LAN 請求者是安裝在最終用戶計算機上的客戶端軟件,必須經過身份驗證才能加入網絡。

第 1 步:檢查您的無線接口和無線網絡的名稱

iwconfig 運行命令以查找您的無線接口的名稱。

iwconfig

wlan0 它是不使用 systemd 的 Linux 系統上無線網絡接口的通用名稱。 Ubuntu 使用 Systemd,因此無線網絡接口的名稱為: wlp4s0您還可以看到它當前未與任何接入點關聯。

如果您沒有看到您的無線接口,您可能需要使用以下命令將其調出:

sudo ifconfig wlp4s0 up

接下來,通過使用以下命令掃描附近的網絡來查找無線網絡名稱。交換 wlp4s0 使用您自己的無線接口名稱。 ESSID 是網絡名稱標識符。

sudo iwlist wlp4s0 scan | grep ESSID

第 2 步:使用 WPA_Supplicant 連接到 Wi-Fi 網絡

現在安裝 wpa_supplicant 來自默認軟件存儲庫的 Ubuntu 18.04/20.04。

sudo apt install wpasupplicant

需要創建 wpa_supplicant.conf 利用 wpa_passphrase 公共事業。 wpa_supplicant.conf 描述用戶連接到計算機的所有網絡的配置文件。通過運行以下命令創建此文件: 將 ESSID 和 Wi-Fi 密碼替換為您自己的密碼。

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

wpa_passphrase

在上面的屏幕截圖中,ESSID 用雙引號括起來,因為它包含空格。

輸出 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_請求者.

sudo systemctl stop NetworkManager

此外,通過運行以下命令禁用 NetworkManager 在啟動時的自動啟動:

sudo systemctl disable NetworkManager-wait-online NetworkManager-dispatcher NetworkManager

默認情況下 wpa_supplicant 在前台運行。連接後,打開另一個終端窗口並運行:

iwconfig

您可以看到無線接口與接入點相關聯。

使用終端命令在 ubuntu 中啟用 wifi

可以推 CTRL+C 當前中斷 wpa_請求者 通過過程和添加 -B 橫幅。

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

您已通過身份驗證並連接到無線網絡,但您還沒有 IP 地址。 要從 DHCP 服務器獲取私有 IP 地址,請使用以下命令:

sudo dhclient wlp4s0

您的無線接口現在有一個私有 IP 地址,應該如下所示:

ip addr show wlp4s0

ubuntu dhclient 獲取私有IP地址

現在您可以訪問互聯網了。要釋放您的私有 IP 地址,請執行以下操作:

sudo dhclient wlp4s0 -r

連接到隱藏的無線網絡

如果您的無線路由器不廣播 ESSID, /etc/wpa_supplicant.conf 文檔。

scan_ssid=1

如下:

network={
        ssid="LinuxBabe.Com Network"
        #psk="12345qwert"
        psk=68add4c5fee7dc3d0dac810f89b805d6d147c01e281f07f475a3e0195
        scan_ssid=1
}

第 3 步:啟動時自動連接

要在啟動時自動連接到無線網絡,您需要編輯 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

如果檢測到故障,始終建議重新啟動 wpa_supplicant。在右下角添加以下內容 ExecStart 金屬絲。

Restart=always

如果您在此文件中找到以下行,請將其註釋掉(在行首添加 # 字符)。

Alias=dbus-fi.w1.wpa_supplicant1.service

保存並關閉文件。 (要將文件保存在 Nano 文本編輯器中, Ctrl+OEnter 確認。按退出 Ctrl+X.) 然後重新加載 systemd。

sudo systemctl daemon-reload

效力 wpa_請求者 該服務將在啟動時啟動。

sudo systemctl enable wpa_supplicant.service

我們還需要開始 dhclient 在引導時從 DHCP 服務器獲取私有 IP 地址。這可以通過創建一個 systemd 服務單元來實現。 dhclient.

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

將以下文本放入文件中。

[Unit]
Description= DHCP Client
Before=network.target
After=wpa_supplicant.service

[Service]
Type=forking
ExecStart=/sbin/dhclient wlp4s0 -v
ExecStop=/sbin/dhclient wlp4s0 -r
Restart=always
 
[Install]
WantedBy=multi-user.target

保存並關閉文件。然後啟用此服務。

sudo systemctl enable dhclient.service

如何獲取靜態 IP 地址

如果要獲取靜態 IP 地址,應禁用 dhclient.service.

sudo systemctl disable dhclient.service

我需要在 Ubuntu 18.04/20.04 上使用 netplan 配置靜態 IP 地址。創建以下配置文件 /etc/netplan/.

sudo nano /etc/netplan/10-wifi.yaml

將以下行添加到此文件中:交換 192.168.0.102 使用您的首選 IP 地址。注意縮進。任何額外的空間都會使配置無效。

network:
    ethernets:
        wlp4s0:
            dhcp4: no
            addresses: [192.168.0.102/24]
            gateway4: 192.168.0.1
    version: 2

保存並關閉文件。然後應用配置。

sudo netplan apply

你也可以開啟 --debug 如果事情沒有按預期工作的選項。

sudo netplan --debug apply

如果有其他 .yaml 下面的文件 /etc/netplan/ 目錄,然後 netplan 來自不同文件的配置會自動合併。 netplan 利用 systemd-networkd 作為後端網絡渲染器。推薦配置 wpa_supplicant.service 向前跑 systemd-networkd.service,系統首先關聯一個Wi-Fi接入點,然後獲取一個私有IP地址。

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

找到這一行:

Before=network.target

將其更改為:

Before=network.target systemd-networkd.service

保存並關閉文件。

獲取靜態 IP 地址的另一種方法是登錄路由器的管理界面並為無線網卡的 MAC 地址分配一個靜態 IP(如果您的路由器支持)。

在 Ubuntu 中使用主機名訪問服務

事實上,您不需要為您的 Ubuntu 機器獲取靜態 IP 地址。 Ubuntu 可以使用 mDNS(多播 DNS)向本地網絡公佈其主機名。然後,客戶端可以使用此主機名訪問 Ubuntu 機器上的服務。 此主機名將始終解析為您的 Ubuntu 機器的 IP 地址,即使 IP 地址發生更改。

要使用 mDNS,您需要安裝 avahi-daemon,它是 mDNS/DNS-SD 的開源實現。

sudo apt install avahi-daemon

啟動服務。

sudo systemctl start avahi-daemon

啟動時啟用自動啟動。

sudo systemctl enable avahi-daemon

Avahi-daemon 偵聽 UDP 5353,因此您需要在防火牆中打開此端口。 如果您使用的是 UFW,請運行以下命令:

sudo ufw allow 5353/udp

接下來,您需要為您的 Ubuntu 機器設置一個唯一的主機名 hostnamectl 命令。 將 ubuntubox 替換為您的首選主機名。它不應該被本地網絡中的其他設備使用。

sudo hostnamectl set-hostname ubuntubox

重新啟動 avahi 守護進程。

sudo systemctl restart avahi-daemon

檢查狀態

systemctl status avahi-daemon

您可以檢查以 . 開頭的 mDNS 主機名。 .local 場地。

avahi-daemon mdns 主機名

客戶端計算機還必須安裝 mDNS/DNS-SD 軟件。

  • Linux 用戶應該安裝 avahi-daemon.
  • Windows 用戶必須安裝 Bonjour 打印服務或安裝 iTunes 才能啟用 Bonjour 服務。
  • 在 macOS 上,Bonjour 已預先安裝。

現在你可以使用 ubuntubox.local 無需檢查和輸入 IP 地址。

在樹莓派上解鎖 Wi-Fi

Raspberry Pi 的 Ubuntu ARM 操作系統默認阻止無線接口。您需要通過以下方式解除阻止:

sudo rfkill unblock wifi

要在啟動時解鎖它,請創建一個 systemd 服務單元。

sudo nano /etc/systemd/system/unblock-wifi.service

添加以下行:

[Unit]
Description=RFKill Unblock WiFi Devices
Requires=wpa_supplicant.service
After=wpa_supplicant.service

[Service]
Type=oneshot
ExecStart=/usr/sbin/rfkill unblock wifi
ExecStop=
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

保存並關閉文件。啟動時啟用自動啟動。

sudo systemctl enable unblock-wifi

我找到了 unblock-wifi.service 必須在 wpa_supplicant.service 否則無法解鎖wifi。請注意,如果您安裝了桌面環境,則正在運行的網絡管理器可能會干擾您的連接。應該被禁用。例如,在 Raspberry Pi 上使用輕量級 LXQT 桌面環境(sudo apt install lubuntu-desktop) connman.service 和 NetworkManager.service 應該被禁用。

sudo systemctl disable connman.service NetworkManager.service

多個 Wi-Fi 網絡

這個 /etc/wpa_supplicant.conf 一個配置文件可以包含多個 Wi-Fi 網絡。 wpa_supplicant 根據配置文件中網絡塊的順序、網絡安全級別和信號強度自動選擇最佳網絡。

要添加第二個 Wi-Fi 網絡,請執行以下操作:

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

請注意,您應該使用 -a 選項 tee 運行該命令會將新的 Wifi 網絡添加到文件中,而不是刪除原始網絡。

無線網絡安全

不使用 WPA2TKIPWPA2 TKIP + AES 作為 Wi-Fi 路由器的加密方法。 TKIP 不再被認為是安全的。你可以使用它 WPA2-AES 作為一種加密方法。

包起來

我希望本教程可以幫助您使用 WPA 請求者從命令行將 Ubuntu 18.04/20.04 連接到您的 Wi-Fi 網絡。與往常一樣,如果您發現本文對您有幫助,請註冊我們的免費時事通訊以獲取提示和技巧。