無圖形介面、無 NetworkManager/wicd 時,如何在 Linux 純命令列連接 WiFi?本文從無線網卡驅動確認、介面啟用、掃描熱點、開放/WEP/WPA-WPA2 三種加密連線、wpa_supplicant 設定檔編寫、dhcpcd 取得 IP、驗證連線與開機自動化完整流程,適用任何發行版。
# 1. 確認無線網卡驅動已載入
iwconfig
# 輸出含 wlan0 (或 wlp3s0 等) 且顯示 IEEE 802.11 即正常
# 2. 啟用介面
ip link set wlan0 up
# 或舊指令
ifconfig wlan0 up
iw dev wlan0 scan | less
# 關鍵欄位:SSID、signal (dBm)、capability (加密類型: WEP/WPA/WPA2)
iw dev wlan0 connect "SSID_NAME"
iw dev wlan0 connect "SSID_NAME" key 0:WEP_KEY_HEX
# key 0: 表示使用第 0 組金鑰,WEP_KEY 為十六進位字串
現代 WiFi 多為 WPA2,iw 不支援直接連線,必須用 wpa_supplicant。
/etc/wpa_supplicant/wpa_supplicant.conf:
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=wheel
update_config=1
country=TW
network={
ssid="YOUR_SSID"
psk="YOUR_PASSWORD"
priority=1
# 可選:key_mgmt=WPA-PSK, proto=RSN, pairwise=CCMP, group=CCMP
}
wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf
# -B 背景執行,-i 介面,-c 設定檔
dhcpcd wlan0
# 或 dhclient wlan0
iwconfig wlan0
# 輸出應顯示 ESSID:"YOUR_SSID"、Access Point: MAC、Link Quality
ip addr show wlan0
# 應有 inet IP 配置
ping -c 3 8.8.8.8
# 通外網確認
# 建立服務檔 /etc/systemd/system/wifi-connect.service
[Unit]
Description=Connect to WiFi on boot
After=network.target
Wants=network.target
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/bin/ip link set wlan0 up
ExecStart=/usr/sbin/wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf
ExecStart=/usr/sbin/dhcpcd wlan0
ExecStop=/usr/bin/pkill wpa_supplicant
ExecStop=/usr/bin/ip link set wlan0 down
[Install]
WantedBy=multi-user.target
# 啟用
systemctl daemon-reload
systemctl enable --now wifi-connect.service
| 現象 | 可能原因 | 解決 |
|---|---|---|
| iwconfig 無 wlan0 | 驅動未載入/硬體開關關閉 | rfkill list、modprobe 驅動模組 |
| wpa_supplicant 啟動失敗 | 設定檔語法錯誤/密碼錯誤 | wpa_supplicant -i wlan0 -c /etc/... -d 除錯模式 |
| dhcpcd 取不到 IP | DHCP 伺服器無回應/VLAN 標記 | 靜態 IP 設定、檢查交換機 |
| 連線不穩定斷線 | 訊號弱/頻道干擾/省電模式 | iw dev wlan0 set power_save off |