如何通过 nmcli 连接到 802.1x 无线网络

ten*_*sai 12 networking networkmanager nmcli

我可以通过 nm-applet 连接到 802.1 网络。我不喜欢这样做,因为我大部分时间都在没有 nm 的情况下运行,而且我不想加载一个只是为了连接到无线网络。

连接到 802.1 网络时,出现以下错误:

Error: Failed to add/activate new connection: (32) Failed to determine AP security information
Run Code Online (Sandbox Code Playgroud)

我不知道如何解决这个问题,因为 nmcli 似乎没有提供任何指定网络类型的方法。

Bra*_*des 16

您可以使用如下nmcli命令行创建 WPA2 Enterprise 连接(将您自己的 wifi 设备名称替换为wlp3s0,等等):

nmcli connection add \
 type wifi con-name "MySSID" ifname wlp3s0 ssid "MySSID" -- \
 wifi-sec.key-mgmt wpa-eap 802-1x.eap tls 802-1x.identity "USERNAME" \
 802-1x.ca-cert ~/ca.pem 802-1x.client-cert ~/cert.pem \
 802-1x.private-key-password "..." 802-1x.private-key ~/key.pem
Run Code Online (Sandbox Code Playgroud)

然后它会被列在 下nmcli connection,并且可以使用nmcli connection up MySSID.

使用用户名和密码进行身份验证

(此部分由编辑帖子的贡献者帮助添加:)

或者,如果您使用用户名/密码身份验证(可能通过 RADIUS),您可以使用下面的命令添加它(802-1x.eap为您的网络使用正确的选项,ttls下面的示例不需要定义证书)然后使用--ask第一次去连接时把密码保存到连接文件中。

nmcli connection add \
 type wifi con-name "MySSID" ifname wlp3s0 ssid "MySSID" -- \
 wifi-sec.key-mgmt wpa-eap 802-1x.eap ttls \
 802-1x.phase2-auth mschapv2 802-1x.identity "USERNAME" 
Run Code Online (Sandbox Code Playgroud)

如果使用用户名/密码选项,您应该--ask在nmcli第一次打开后添加以保存密码,而不会将其留在命令历史记录中。当您尝试以其他方式提出时,它会给您一条错误消息。使用时您可能会收到有关其他无线设置的提示--ask,您可以输入no它们,除非您需要指定静态 IP,在这种情况下,请回答yes该选项并设置正确的信息,将来您不需要使用--ask除非您的密码更改。

自己探索 nmcli

通常,nmcli可以通过将单词添加asdf.asdf asdf到命令行的末尾来探索可能的设置空间,以生成一条错误消息,说明哪些单词可以替换第一个asdf. 选择一个,然后您将收到一条错误消息,其中列出了第二个可能的子设置asdf。选择其中之一,您将看到可能的设置:

$ nmcli connection add ... asdf.asdf asdf
Error: invalid or not allowed setting 'asdf': 'asdf' not among [connection, 802-11-wireless (wifi), 802-11-wireless-security (wifi-sec), 802-1x, ipv4, ipv6].
$ nmcli connection add ... wifi-sec.asdf asdf
Error: invalid property 'asdf': 'asdf' not among [key-mgmt, wep-tx-keyidx, auth-alg, proto, pairwise, group, leap-username, wep-key0, wep-key1, wep-key2, wep-key3, wep-key-flags, wep-key-type, psk, psk-flags, leap-password, leap-password-flags].
$ nmcli connection add ... wifi-sec.proto asdf
Error: failed to modify wifi-sec.proto: 'asdf' not among [wpa, rsn].
Run Code Online (Sandbox Code Playgroud)

通过迭代所有子设置,我能够拼凑出上面显示的成功命令行。一个惊喜是密码必须在私钥路径之前——如果你把密码放在后面,它就没有效果!


Rab*_*bin 7

无线网络

获取 Wifi 状态

nmcli radio wifi
Run Code Online (Sandbox Code Playgroud)

打开或关闭 wifi

nmcli radio wifi <on|off>
Run Code Online (Sandbox Code Playgroud)

列出要连接的可用接入点 (AP)

nmcli device wifi list
Run Code Online (Sandbox Code Playgroud)

刷新上一个列表

nmcli device wifi rescan
Run Code Online (Sandbox Code Playgroud)

创建到打开的 AP 的新连接

nmcli device wifi connect <SSID|BSSID>
Run Code Online (Sandbox Code Playgroud)

创建到受密码保护的 AP 的新连接

nmcli device wifi connect <SSID|BSSID> password <password>
Run Code Online (Sandbox Code Playgroud)

来源:http : //fedoraproject.org/wiki/Networking/CLI#Wifi

  • 我知道所有这些选项 :( 不过,它们似乎都不适用于 802.1X 网络。当然,这在某种程度上是有原因的,因为我可以通过小程序进行连接。 (2认同)

小智 6

NetworkManager 可以生成带有图形前端的 WPA2 企业配置文件。 nmcli 并且 nmtui 不支持这一点,但可以使用现有的配置文件。

有关连接 WPA2_Enterprise 网络的更多信息