不能,但可用sudo grep -r "psk=" /etc/NetworkManager/system-connections/命令批量查出所有已保存WiFi的明文密码,需sudo权限且密码为WPA-PSK方式存储。

麒麟OS能一键导出WiFi密码吗?不能,但能用一条命令批量查出所有密码
麒麟桌面系统(V10及SP1)底层基于NetworkManager,不提供图形界面的“一键导出”按钮,但完全支持通过终端命令批量读取所有已保存WiFi的明文密码——前提是当前用户有sudo权限,且密码是以WPA-PSK方式存储(绝大多数家用路由器默认如此)。
关键点在于:NetworkManager把每个WiFi连接的密钥明文(或可解密形式)存放在/etc/NetworkManager/system-connections/下,而sudo grep -r "psk="是最快捷、最通用的提取方式。
- 必须用
sudo,否则读不到系统级配置文件 - 输出中
psk=后面紧跟着的就是明文密码(不含引号),例如psk=MyHome2025 - 如果某条目显示
psk-flags=1而非psk=,说明该密码被标记为“仅限root访问”,此时需配合nmcli connection show [名称] -s再加sudo才能看到
为什么nmcli connection show --show-secrets有时不显示密码?
nmcli connection show [名称] -s本应显示含802-11-wireless-security.psk字段的完整密钥,但实际常返回空值或psk-flags=1。这不是命令写错,而是NetworkManager的安全策略限制:默认禁止非root用户读取敏感字段,即使你当前是管理员组成员。
真正可靠的替代方案是直接读配置文件:
- 先执行
ls /etc/NetworkManager/system-connections/确认有哪些已保存网络 - 对单个网络查密码:
sudo cat /etc/NetworkManager/system-connections/ChinaNet-8312.nmconnection | grep psk - 想快速扫全部:
sudo grep -r "psk=" /etc/NetworkManager/system-connections/
导出结果怎么整理成干净文本?用重定向+简单过滤
原始grep -r输出带路径和冒号,不适合直接给同事或备份。可以加管道过滤掉无关信息:
sudo grep -r "psk=" /etc/NetworkManager/system-connections/ | sed 's/^[^:]*://; s/psk=//' | sed 's/"//g' > ~/Desktop/wifi_passwords.txt
这条命令做了三件事:删掉文件路径前缀、去掉psk=标识、去掉双引号。最终每行就是一个纯密码。如需同时保留SSID名,建议用nmcli -g name,802-11-wireless-security.psk connection show配合sudo和awk处理——但注意,后者在老V10上可能因nmcli版本低而不支持-g参数。
导出的密码能直接用于连接隐藏WiFi吗?能,但别直接复制粘贴进GUI
查到的密码是明文,理论上可复用。但麒麟OS图形界面(尤其是老V10)在手动添加隐藏网络时,若密码里含特殊字符(如$、`、\),粘贴进“密钥”输入框后可能被Shell或GUI组件意外截断或转义,导致连接失败。
更稳妥的做法是:用查到的密码,走命令行方式重建连接:
- 先删旧配置:
nmcli connection delete "ChinaNet-8312" - 再用
nmcli connection add命令重新添加,其中wifi-sec.psk参数值用单引号包裹,例如wifi-sec.psk='My$Home2025' - 最后
nmcli connection up "ChinaNet-8312"激活
配置文件路径、psk=格式、特殊字符处理——这三个地方最容易漏看,导出后别急着发给别人,自己先拿一个密码试连一次。

















