如何在 Linux 終端中連線使用 WiFi?

安全劍客發表於2020-09-30
在本教程中,你將學習如何在 Ubuntu 中從終端連線到無線網路。如果你在使用 Ubuntu 伺服器時,無法訪問常規的桌面環境,這將對你非常有幫助。

我的家用電腦主要使用桌面  。我也有多臺 Linux 伺服器用於託管網站以及開源軟體,如 Nextcloud、Discourse、Ghost、Rocket Chat 等。
如何在 Linux 終端中連線使用 WiFi?如何在 Linux 終端中連線使用 WiFi?

我可以使用 linode 在雲端幾分鐘內快速部署 Linux 伺服器。但最近,我在我的樹莓派上安裝了 Ubuntu 伺服器。這是我第一次在物理裝置上安裝伺服器,我不得不做一些額外的事情來透過 行將 Ubuntu 伺服器連線到 WiFi。

在本教程中,我將展示在 Ubuntu Linux 中使用終端連線到 WiFi 的步驟。你應該:

不要害怕使用終端編輯檔案。
知道 wifi 接入點名稱 (SSID) 和密碼。

在 Ubuntu 中從終端連線到 WiFi

當你使用 Ubuntu 桌面時,連線到 WiFi 是很容易的,因為你有圖形使用者介面,可以很容易地做到這一點。但當你使用 Ubuntu 伺服器時就不一樣了,因為你只能使用 行。

Ubuntu 使用 Netplan 工具來輕鬆配置網路。在 Netplan 中,你可以建立一個包含網路介面描述的 YAML 檔案,然後在 netplan 命令列工具的幫助下,生成所有需要的配置。

讓我們看看如何使用 Netplan 從終端連線到無線網路。

步驟 1:確定你的無線網路介面名稱

有幾種方法可以識別你的網路介面名稱。你可以使用 ip 命令、過時的 ipconfig 命令或檢視這個檔案:

ls /sys/class/net

這應該會展示所有可用的網路介面(乙太網、WiFi 和環回)。無線網路介面名稱以 w 開頭,通常命名類似 wlanX、wlpxyz。

[email protected]:~$ ls /sys/class/net 
eth0 lo wlan0

記下這個介面名。你將在下一步使用它。

步驟 2:編輯 Netplan 配置檔案中的 wifi 介面詳細資訊

Netplan 配置檔案在 /etc/netplan 目錄下。如果你檢視這個目錄的內容,你應該看到類似 01-network-manager-all.yml 或 50-cloud-init.yaml 等檔案。

如果是 Ubuntu 伺服器,你應該有 50-cloud-init.yaml 檔案。如果是桌面計算機,應該是 01-network-manager-all.yml 檔案。

Linux 桌面計算機的 Network Manager 允許你選擇一個無線網路。你可以在它的配置中硬編碼寫入 WiFi 接入點。這可以在自動掉線的情況下(比如掛起)時幫助到你。

不管是哪個檔案,都可以開啟編輯。我希望你對 Nano 編輯器有一點熟悉,因為 Ubuntu 預裝了它。

sudo nano /etc/netplan/50-cloud-init.yaml

YAML 檔案對空格、縮排和對齊方式非常敏感。不要使用製表符,在看到縮排的地方使用 4 個空格(或 2 個,以 YAML 檔案中已經使用的為準)代替。

基本上,你需要新增以下幾行,引號中是接入點名稱(SSID) 和密碼(通常):

wifis: 
    wlan0: 
        dhcp4: true 
        optional: true 
        access-points: 
            "SSID_name": 
                password: "WiFi_password"

再說一次,保持我所展示的對齊方式,否則 YAML 檔案不能被解析,它會丟擲一個錯誤。

你的完整配置檔案可能是這樣的:

# This file is generated from information provided by the datasource. Changes 
# to it will not persist across an instance reboot. To disable cloud-init's 
# network configuration capabilities, write a file 
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following: 
# network: {config: disabled} 
network: 
    ethernets: 
        eth0: 
            dhcp4: true 
            optional: true 
    version: 2 
    wifis: 
        wlan0: 
            dhcp4: true 
            optional: true 
            access-points: 
                "SSID_name": 
                    password: "WiFi_password"

我覺得很奇怪,儘管有訊息說更改不會在例項重啟後保留,但它仍然可以工作。

不管怎樣,用這個命令生成配置:

sudo netplan generate

如果你幸運的話,你應該連上網路。嘗試 ping 一個網站或執行 apt 更新命令。

然而,事情可能不會那麼順利,你可能會看到一些錯誤。如果是這種情況,請嘗試一些額外的步驟。

可能的故障排除

當你使用 netplan apply 命令時,你有可能在輸出中看到類似這樣的錯誤。

Failed to start netplan-wpa-wlan0.service: Unit netplan-wpa-wlan0.service not found. 
Traceback (most recent call last): 
  File "/usr/sbin/netplan", line 23, innetplan.main() 
  File "/usr/share/netplan/netplan/cli/core.py", line 50, in main 
    self.run_command() 
  File "/usr/share/netplan/netplan/cli/utils.py", line 179, in run_command 
    self.func() 
  File "/usr/share/netplan/netplan/cli/commands/apply.py", line 46, in run 
    self.run_command() 
  File "/usr/share/netplan/netplan/cli/utils.py", line 179, in run_command 
    self.func() 
  File "/usr/share/netplan/netplan/cli/commands/apply.py", line 173, in command_apply 
    utils.systemctl_networkd('start', sync=sync, extra_services=netplan_wpa) 
  File "/usr/share/netplan/netplan/cli/utils.py", line 86, in systemctl_networkd 
    subprocess.check_call(command) 
  File "/usr/lib/python3.8/subprocess.py", line 364, in check_call 
    raise CalledProcessError(retcode, cmd) 
subprocess.CalledProcessError: Command '['systemctl', 'start', '--no-block', 'systemd-networkd.service', 'netplan-wpa-wlan0.service']' returned non-zero exit status 5.

可能是 wpa_supplicant 服務沒有執行。執行這個命令:

sudo systemctl start wpa_supplicant

再次執行 netplan apply。如果它能解決這個問題,那就太好了。否則,使用下面的命令關閉 Ubuntu 系統:

shutdown now

重新啟動 Ubuntu 系統,登入並再次生成和執行 netplan apply:

sudo netplan generate 
sudo netplan apply

現在可能會顯示警告(而不是錯誤)。這是警告而不是錯誤。我檢查了正在執行的 systemd 服務,發現 netplan-wpa-wlan0.service 已經在執行了。可能是因為它已經在執行了,而且 netplan apply 更新了配置檔案(即使沒有任何改變),所以顯示了警告。

Warning: The unit file, source configuration file or drop-ins of netplan-wpa-wlan0.service changed on disk. Run 'systemctl daemon-reload' to reload units.

這並不重要,你可以透過執行 apt update 來檢查網路是否已經正常工作。

我希望你能夠在本教程的幫助下,在 Ubuntu 中使用命令列連線到 WiFi。

原文地址:

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31559985/viewspace-2725188/,如需轉載,請註明出處,否則將追究法律責任。

相關文章