ConnectToWIFI

前言

因為我的電腦是用 i3,不是用一些方便的 DE,所以連 wifi 我都是用 NetworkManager 的指令在連。
但在連 eduroam 的時候我連不上去,所以我決定把作法紀錄下來。

備註

以下以 <ssid> 代表 WIFI 的名稱,<password> 代表密碼,而 <username> 代表使用者名稱(大部分 WIFI 應該沒有這項)。

1
2
$ nmcli --version
nmcli tool, version 1.40.0-1

Security

輸入 $ nmcli dev wifi list$ nmcli dev wifi 可以查看當前附近的 WIFI。

1
IN-USE BSSID SSID MODE CHAN RATE SIGNAL BARS SECURITY

其中 IN-USE 會在你正在連線的 WIFI 那列打一個 *,而 SSID 代表 WIFI 名稱,然後最後的 SECURITY 是這次的主題,接下來會用 SECURITY 顯示的來分類。

沒有 Security

不須密碼即可直接連線的 WIFI,在 terminal 輸入$ nmcli dev wifi con <ssid> 通常即可連線。

然而有些 WIFI 是可以直接連線,但是在連線後必須打開瀏覽器認證才會給予網路連線,例如台大的 NTU 之類的。這種就連上後打開瀏覽器正常會跳出認證網站。

WPA2

這應該是最常見的,連線時輸入密碼即可連線。在 terminal 輸入 $ nmcli dev wifi con <ssid> password <password> 即可連線。
不過這樣你會變成明文地輸入你的密碼,所以不想要這樣的話可以使用 --ask 來讓他在接下來問你密碼:

1
2
$ nmcli devi wifi con <ssid> --ask
Password: •••••••••

這樣就能連上了

WPA2 802.1X

接下來開始比較棘手了,也是這篇文章的由來,例如 ntu_peapntu_csieeduroam 都是,通常是連線時要給帳號密碼。
首先你直接 $ nmcli dev wifi con <ssid> 的話他會顯示 Error: Failed to add/active new conneciton: Failed to determine AP security information,就算用 nmtui 也是一樣。

peap authentication

像是 eduroamntu_peap 都是使用 PEAP 當作認證,這部份可能要去查 WIFI 供應商的說明。

實際解決方法是我們要手動建立一個 connection 然後把我們要的資訊打進去,具體如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
$ nmcli con add type wifi ssid <ssid>
Connection 'wifi' (...) successfully added.
$ nmcli con edit wifi
nmcli> set connection.id <ssid>
nmcli> set 802-1x.eap peap
nmcli> set 802-1x.phase2-auth mschapv2
nmcli> set 802-1x.identity <username>
nmcli> set 802-1x.password <password>
nmcli> set wifi-sec.key-mgmt wpa-eap
nmcli> save
Connection '<ssid>' (...) successfully updated.
nmcli> activate
Connecition successfully activated
nmcli> quit

在最後 activate 後按任意鍵即可繼續輸入。

ttls authenticaion

像是台大資工的 csie 網路是 TTLS 認證。

實際解決方法,其實照上面 peap authenticaion 的作法就好了,什麼都不用改,我也不知道為什麼,太神奇了。

第二次以後

當你成功連到網路後,你就可以直接 $ nmcli con up <ssid> 來連上網路,不過網頁式認證的可能還是得開瀏覽器打帳號密碼。

後言

因為是很急著打出來的,所以可能有錯字或少打什麼指令,如果有任何錯誤或建議歡迎指出><。

Reference

Cannot Connect to College WIFI using NetworkManager:底下的回覆基本上就是 WPA2 802.1X 的解法。