已导入连接的列表来自应用本身,而不是 Application Support 内的某个文件夹。适用于 macOS 的 OpenVPN Connect 提供命令行标志,用来查询它自己的配置文件存储,这意味着答案来自与 GUI 相同的模型。因此,有文档记录的列表胜过你通过浏览找到的任何文件夹。这也解释了为什么该文件夹不能替代它。

命令读取的是每个已导入配置文件的一条小记录:标识符、显示名称、主机、配置文件类型、保存的用户名以及任何服务器覆盖设置。关于连接的其他一切都位于这条记录之后。记录就是清单,而且它刻意很窄。

CLI 标志实际能触及什么

Mac 的命令行指南记录了--version和--list-profiles针对 OpenVPN Connect 可执行文件的用法。文档中的路径是占位符,必须替换为已安装应用包内的二进制文件。请给该路径加上引号,因为应用包名称通常包含空格。

该二进制文件不是 Homebrew 提供的openvpn可执行文件。它们是带不同标志的不同程序,把社区客户端的帮助输出套用到 Connect 问题上,会得到一个自信却错误的答案。

在你要检查其配置文件的用户上下文中运行查询。配置文件存储是每个用户的状态,因此管理员 shell 可能看到不同的清单,甚至什么都看不到。如果 GUI 明明显示有连接而列表为空,这种不一致就是首先要检查的地方。

读记录,而不只是读名称

列出的字段是为了区分看起来相似的条目。两个配置文件可以共用一个显示名称,却指向不同的主机,而标识符正是你记录目标配置文件时区分它们的关键。把 ID 写在名称旁边,而不是替代名称。

类型字段告诉你配置文件如何认证:自动登录、绑定用户或绑定服务器。这一分类解释了应用会要求哪种凭据,以及连接能否在无人值守时启动。

主机名和服务器覆盖是路由事实。一个熟悉的名称加上指向 staging 主机的覆盖,与同名但无覆盖的连接不同,而只有记录能显示这种差异。在比较其他任何内容之前,先比较覆盖设置。手动重建配置文件时,这是最常被遗漏的字段。

为什么存储文件夹是糟糕的替代品

Application Support 下的目录是私有存储,不是有文档记录的接口。它的布局可能随版本变化,其中的文件只对写入它们的应用有意义。

把该文件夹复制到另一台 Mac 会带走文件,却带不走它们所依赖的上下文。Keychain 条目、注册用户和应用自身的记账是分开的,因此复制过去的文件夹可能看起来已经就位,却仍然无法连接。看起来完整却连不上的迁移,比拒绝开始更糟。

把这个文件夹当作价值不明的备份,而不是迁移格式。如果需要迁移连接,请迁移服务器签发的源配置文件,而不是另一套安装状态的一部分。

清单无法告诉你的事

该列表不会导出可移植的 .ovpn 文件,也不会交还应用持有的凭据或证书。它只报告某个配置文件存在以及它指向什么。如何在别处重建它是另一个问题,也有另一个答案。

迁移时,请获取经批准的原始配置文件或服务器当前的下载文件,然后通过受支持的工作流导入。有文档记录的导入标志接收源文件;导出方向不属于该接口。

保持清单输出干净

输出中可能包含内部主机名和账户标识符。像对待任何其他清单导出一样对待它,并在分享截图前遮盖主机和用户字段。

检查不需要导入开关或密码。如果你收到的命令仅为了列出配置文件就要求提供凭据,请停下来核对有文档记录的标志。该列表是只读查询,也应保持只读。

相关文章