在本教程中(zhōng),您将學習如何從Ubuntu中(zhōng)的終端連接到無線網絡。如果您在無法訪問常規桌面環境的Ubuntu服務器上使用此功能,則特别有用。
我(wǒ)主要在家用計算機上使用台式機Linux。我(wǒ)也有多個Linux服務器來托管它的FOSS和相關網站以及Nextcloud,Discourse,Ghost,Rocket Chat等開源軟件。
我(wǒ)使用Linode在數分(fēn)鍾内在雲中(zhōng)快速部署Linux服務器。但是最近,我(wǒ)在Raspberry Pi上安裝了Ubuntu服務器。這是我(wǒ)第一(yī)次在物(wù)理設備上安裝服務器,并且不得不做一(yī)些額外(wài)的工(gōng)作才能通過命令行将Ubuntu服務器連接到WiFi。
在本教程中(zhōng),我(wǒ)将展示在Ubuntu Linux中(zhōng)使用終端連接到WiFi的步驟。你應該
使用Ubuntu桌面時很容易,因爲您可以使用GUI輕松地做到這一(yī)點。當您使用Ubuntu服務器并僅限于命令行時,情況會有所不同。
Ubuntu使用Netplan實用程序輕松配置網絡。在Netplan中(zhōng),使用網絡接口的描述創建YAML文件,并在netplan命令行工(gōng)具的幫助下(xià)生(shēng)成所有必需的配置。
讓我(wǒ)們看看如何使用Netplan從終端連接到無線網絡。
有幾種方法可以識别您的網絡接口名稱。您可以使用ip命令,不建議使用的ipconfig命令或檢查此文件:
ls /sys/class/net
這應該爲您提供所有可用的網絡接口(以太網,wifi和環回)。無線網絡接口名稱以“ w”開頭,通常類似于wlanX,wlpxyz。
abhishek@itsfoss:~$ ls /sys/class/net
eth0 lo wlan0
記下(xià)該接口名稱。您将在下(xià)一(yī)步中(zhōng)使用它。
Netplan配置文件位于/ etc / netplan目錄中(zhōng)。如果檢查此目錄的内容,應該會看到01-network-manager-all.yml或50-cloud-init.yaml之類的文件。
如果是Ubuntu服務器,則應具有cloud-init文件。對于台式機,它應該是網絡管理器文件。
Linux桌面上的網絡管理器允許您選擇無線網絡。您可以在其配置中(zhōng)對WLAN接入點進行硬編碼。在某些情況下(xià)(例如暫停),這會在連接自動斷開的情況下(xià)爲您提供幫助。
無論是哪個文件,都可以打開以進行編輯。我(wǒ)希望您有點熟悉Nano編輯器,因爲Ubuntu已預裝了它。
sudo nano /etc/netplan/50-cloud-init.yaml
YAML文件對空格,縮進和對齊非常敏感。不要使用制表符,而應在出現縮進的地方使用4個(或2個,在YAML文件中(zhōng)已使用的任何一(yī)個)空格。
基本上,您必須在引号中(zhōng)添加以下(xià)行,以及接入點名稱(SSID)及其密碼(通常):
wifis:
wlan0:
dhcp4: true
optional: true
access-points:
"SSID_name":
password: "WiFi_password"
再次,保持對齊方式如我(wǒ)所示,否則YAML文件将不會被解析,并且将引發錯誤。
您的完整配置文件可能如下(xià)所示:
# 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"
我(wǒ)感到奇怪的是,盡管有消息說更改不會在實例重新啓動後持續存在,但它仍然有效。
無論如何,請使用以下(xià)命令生(shēng)成配置:
sudo netplan generate
現在應用此:
sudo netplan apply
如果幸運的話,您應該已經連接了網絡。嘗試ping網站或運行apt update命令。
但是,事情可能不會那麽順利,您可能會看到一(yī)些錯誤。如果是這樣,請嘗試一(yī)些額外(wài)的步驟。
使用netplan apply命令時,可能會在輸出中(zhōng)看到如下(xià)所示的錯誤:
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服務可能未運行。運行以下(xià)命令:
sudo systemctl start wpa_supplicant
再次運行netplan應用。如果能很好地解決問題。否則,請使用以下(xià)命令關閉Ubuntu系統:
shutdown now
再次啓動Ubuntu系統,登錄并再次生(shēng)成并應用netplan:
sudo netplan generate
sudo netplan apply
現在可能顯示警告(而不是錯誤)。這是警告,而不是錯誤。我(wǒ)檢查了正在運行的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可能已經在工(gōng)作。
我(wǒ)希望您能夠在本教程的幫助下(xià)使用Ubuntu中(zhōng)的命令行連接到wifi。如果您仍然遇到問題,請在評論部分(fēn)讓我(wǒ)知(zhī)道。