在本教程中,您將學習如何在 Ubuntu 18.04 / 20.04 服務器和桌面上使用命令行連接到 Wi-Fi 網絡。 wpa_supplicant..在現代家庭無線網絡中,通信受 WPA-PSK(預共享密鑰)保護,而不是為企業網絡設計的 WPA-Enterprise。 WPA-PSK 也稱為 WPA-個人。 wpa_supplicant WPA 請求者組件的實現。 Wifi supplicant 是安裝在最終用戶計算機上的客戶端軟件,需要身份驗證才能加入網絡。
第一步:找到無線接口和無線網絡的名稱
跑 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
請注意,在上面的屏幕截圖中,ESSID 包含空格,因此我們將 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 桌面,則需要使用以下命令停止 NetworkManager。否則,您在使用時會遇到連接問題。 wpa_supplicant..
sudo systemctl stop NetworkManager
另外,運行以下命令來禁用 NetworkManager 在啟動時的自動啟動。
sudo systemctl disable NetworkManager-wait-online NetworkManager-dispatcher 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
您現在可以訪問互聯網。要釋放私有 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+O
然後按 Enter
確認。按退出 Ctrl+X
.. ) 然後重新加載 systemd。
sudo systemctl daemon-reload
效力 wpa_supplicant 該服務在啟動時啟動。
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 守護程序偵聽 UDP5353,因此您需要在防火牆中打開此端口。 如果您使用的是 UFW,請運行以下命令:
sudo ufw allow 5353/udp
接下來,您需要為您的 Ubuntu 機器設置一個唯一的主機名 hostnamectl
命令。 將 ubuntubox 替換為本地網絡中其他設備未使用的首選主機名。
sudo hostnamectl set-hostname ubuntubox
現在重新啟動 avahi-daemon。
sudo systemctl restart avahi-daemon
如果您檢查狀態
systemctl status avahi-daemon
mDNS 主機名顯示如下。 .local
場地。
您還必須在客戶端計算機上安裝 mDNS / DNS-SD 軟件。
- Linux用戶需要安裝
avahi-daemon
.. - Windows 用戶必須安裝 Bonjour 打印服務或安裝 iTunes 才能啟用 Bonjour 服務。
- Bonjour 預裝在 macOS 上。
現在你可以使用 ubuntubox.local
主機名。 您無需確認和輸入 IP 地址。
在樹莓派上解鎖 Wifi
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 網絡添加到文件中,而不是刪除原始的 Wifi 網絡。
無線網絡安全
不使用 WPA2 TKIP 還 WPA2 TKIP + AES 作為 Wi-Fi 路由器的加密方法。 TKIP 不再被認為是安全的。你可以使用它 WPA2-AES 作為一種加密方式。
包起來
我們希望本教程將幫助您使用 WPA 請求者從命令行將 Ubuntu 18.04 / 20.04 連接到您的 Wi-Fi 網絡。與往常一樣,如果您覺得本文有用,請訂閱我們的免費新聞通訊以獲取更多提示和技巧。