你在 Windows 命令提示符中输入 vpncli,却收到“无法识别”的错误,或者窗口打开后停在一个你没想到的问题上。两种症状通常出自同一个地方:机器上安装了不止一条 Cisco VPN 客户端分支,而你运行的命令属于错误的那一条。解决办法是启动随 Secure Client 提供的可执行文件,然后回答网关实际发送的提示。

症状指向两个不同的客户端

Cisco Secure Client 包含一个名为 vpncli.exe 的 Windows 命令行接口。较旧的 Cisco IPsec VPN Client 提供的是另一个程序 vpnclient.exe,命令和密码开关都不同。把两者混在一起的指南会给出看起来合理、却立刻失败的命令。已安装的程序文件夹是区分它们最快的方法。

如果 vpncli 不在 PATH 中,这并不能证明组件缺失。安装程序只是没有把文件夹加入 PATH,所以你要用完整路径调用该可执行文件。

启动属于 Secure Client 的可执行文件

对于 Secure Client 5.x 安装,文档记载的位置是 Program Files (x86) 下的 Secure Client 文件夹。在 PowerShell 中必须使用调用运算符,因为路径包含空格:& 'C:\Program Files (x86)\Cisco\Cisco Secure Client\vpncli.exe'。如果该文件不存在,请检查已安装版本及其文件夹,而不是下载旧客户端来填补空缺。

从 cmd.exe 调用同一路径不需要调用运算符,但仍然需要引号。选一个 shell 并一直用下去,因为两者对引号的处理不同,网上失败的例子里有一半是引号问题。

连接并回答网关真正提出的问题

在客户端提示符下,连接到已批准的网关或已配置的别名:connect vpn.example.com。把示例替换成你自己的主机名。客户端随后会要求你的部署所需的凭据,其中可能包括证书选择、令牌代码或第二因素。按出现顺序回答每一个提示。

Cisco 的文档示例还显示了一个需要明确回答的横幅,因此只提供用户名和密码的脚本可能停在该横幅处。请阅读屏幕上的问题,而不是假定下一个提示就是密码。

信任之前先检查会话

连接建立后,stats 会输出会话信息:网关、分配到的地址、协议和持续时间。还要检查一个预期的内部资源,因为在证明其路由、DNS 和应用权限满足任务之前,会话就已经存在了。会话在线时记录分配到的地址。

想结束 VPN 会话时运行 disconnect,想离开交互式 CLI 时运行 quit。两者并不是同义词,关闭窗口也不是其中任何一个的文档化替代做法。

自动化是另一个决定

一次能用的终端登录并不能证明计划任务可以完成同样的认证。在把会话变成后台任务之前,先写下所需的身份、执行账户、证书访问权限以及任何用户交互。如果部署需要浏览器登录或审批,请与其运营方确认受支持的工作流程,而不是把提示当作障碍。

不要照搬把密码直接写进命令行的旧示例。被灌入交互式对话的固定行在网关改变问题时立刻失效,而脚本里保存的凭据是一处只等着被写进报告的发现。《Cisco CLI 参考》记录了这个客户端支持的命令。

当登录失败时,保留客户端版本、网关、时间以及不涉及机密的错误文本。这四项事实能把错误的可执行文件、认证被拒绝,以及连接成功却无法访问其应用的会话区分开来。

相关文章