我已经了解了如何使用以下命令连接到隐藏的 wifi 网络:
nmcli c add type wifi con-name $ssid ifname $adapter ssid $ssid
nmcli con modify $ssid wifi-sec.key-mgmt wpa-psk
nmcli con modify $ssid wifi-sec.psk $password
nmcli con up $ssid
在上面的代码中,为了清楚起见,连接名称设置为与 SSID 相同的名称。
然而,这需要我知道wifi身份验证的类型。
当连接到广播其 SSID 的 AP 时,网络管理器似乎可以找出正在使用的身份验证类型,因此我只需要使用如下方式提供密码:
nmcli -w 30 device wifi connect $ssid password $password ifname $adapter
有没有一种方法可以连接到隐藏的 wifi AP,这样nmcl
我只需要提供密码、SSID 和设备,而不需要提供身份验证类型,类似于连接到非隐藏 AP 不需要我指定身份验证类型?
答案1
使用nmcli
with时device wifi connect
,尝试将hidden
选项设置为yes
。
手册摘录[1]:
wifi connect (B)SSID [password password] [wep-key-type {key | phrase}] [ifname ifname] [bssid BSSID] [name name] [private {yes | no}] [hidden {yes | no}]
Connect to a Wi-Fi network specified by SSID or BSSID. The command finds a matching connection or creates one and then activates it on a device. This is a
command-line counterpart of clicking an SSID in a GUI client. If a connection for the network already exists, it is possible to bring up (activate) the existing
profile as follows: nmcli con up id name. Note that only open, WEP and WPA-PSK networks are supported if no previous connection exists. It is also assumed that
IP configuration is obtained via DHCP.
If --wait option is not specified, the default timeout will be 90 seconds.
Available options are:
[...]
hidden
set to yes when connecting for the first time to an AP not broadcasting its SSID. Otherwise, the SSID would not be found and the connection attempt would
fail.
[1]: https://developer.gnome.org/NetworkManager/stable/nmcli.html
答案2
通常nmcli device wifi connect "$SSID"
就是这里的解决方案。如果尚不存在配置文件,这将创建一个新的配置文件。
但是,这要求 NetworkManager 在扫描结果中找到网络,否则它不知道要设置哪些设置。由于网络是隐藏的,因此它可能不存在。要解决此问题,请首先显式扫描 SSID,nmcli device wifi rescan ssid "$SSID"
以便在扫描结果 ( ) 中找到它nmcli device wifi
。
正确的解决方案确实应该是 user234931 所说的(nmcli device wifi connect "$SSID" hidden yes
),但我不确定这是否真的有效。也许确实如此,否则应该在 NetworkManager 中修复:)
答案3
对于用户仍然搜索只是为了添加新的配置文件而不使用隐藏网络连接到它,您可以使用名为“wifi.hiden”的属性
nmcli 工具,版本 1.36.6
nmcli con add con-name test666xx type wifi wifi.hidden false ssid hahahhaha
该命令将创建一个新的网络配置文件。