? ?
在本教程中,您將學習如何從Ubuntu中的終端連接到無線網絡。如果您在無法訪問常規桌面環境的Ubuntu服務器上使用此功能,則特別有用。
我主要在家用計算機上使用臺式機Linux。我也有多個Linux服務器來托管它的FOSS和相關網站以及Nextcloud,Discourse,Ghost,Rocket Chat等開源軟件。
我使用Linode在數分鐘內在云中快速部署Linux服務器。但是最近,我在Raspberry Pi上安裝了Ubuntu服務器。這是我第一次在物理設備上安裝服務器,并且不得不做一些額外的工作才能通過命令行將Ubuntu服務器連接到WiFi。
在本教程中,我將展示在Ubuntu Linux中使用終端連接到WiFi的步驟。你應該
使用Ubuntu桌面時很容易,因為您可以使用GUI輕松地做到這一點。當您使用Ubuntu服務器并僅限于命令行時,情況會有所不同。
Ubuntu使用Netplan實用程序輕松配置網絡。在Netplan中,使用網絡接口的描述創建YAML文件,并在netplan命令行工具的幫助下生成所有必需的配置。
讓我們看看如何使用Netplan從終端連接到無線網絡。
有幾種方法可以識別您的網絡接口名稱。您可以使用ip命令,不建議使用的ipconfig命令或檢查此文件:
ls /sys/class/net
這應該為您提供所有可用的網絡接口(以太網,wifi和環回)。無線網絡接口名稱以“ w”開頭,通常類似于wlanX,wlpxyz。
abhishek@itsfoss:~$ ls /sys/class/net
eth0 lo wlan0
記下該接口名稱。您將在下一步中使用它。
Netplan配置文件位于/ etc / netplan目錄中。如果檢查此目錄的內容,應該會看到01-network-manager-all.yml或50-cloud-init.yaml之類的文件。
如果是Ubuntu服務器,則應具有cloud-init文件。對于臺式機,它應該是網絡管理器文件。
Linux桌面上的網絡管理器允許您選擇無線網絡。您可以在其配置中對WLAN接入點進行硬編碼。在某些情況下(例如暫停),這會在連接自動斷開的情況下為您提供幫助。
無論是哪個文件,都可以打開以進行編輯。我希望您有點熟悉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
現在應用此:
sudo netplan apply
如果幸運的話,您應該已經連接了網絡。嘗試ping網站或運行apt update命令。
但是,事情可能不會那么順利,您可能會看到一些錯誤。如果是這樣,請嘗試一些額外的步驟。
使用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, in <module>
netplan.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應用。如果能很好地解決問題。否則,請使用以下命令關閉Ubuntu系統:
shutdown now
再次啟動Ubuntu系統,登錄并再次生成并應用netplan:
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更新來檢查Internet可能已經在工作。
我希望您能夠在本教程的幫助下使用Ubuntu中的命令行連接到wifi。如果您仍然遇到問題,請在評論部分讓我知道。