在 Linux 机器上,我们尝试使用 Cisco AnyConnect 版本建立 VPN 连接,anyconnect-linux64-4.10.05085-predeploy-k9
如下所示:
printf '<user>\n<password>\ny' | /opt/cisco/anyconnect/bin/vpn -s connect <host>
我们得到这个错误:
>> state: Connecting
>> notice: Establishing VPN session...
The AnyConnect Downloader is analyzing this computer. Please wait...
Initializing the AnyConnect Downloader...
The AnyConnect Downloader is performing update checks...
The AnyConnect Downloader updates have been completed.
>> notice: The AnyConnect Downloader is performing update checks...
>> notice: Checking for profile updates...
>> notice: Checking for customization updates...
>> notice: Performing any required updates...
>> notice: The AnyConnect Downloader updates have been completed.
Please wait while the VPN connection is established...
>> state: Connecting
>> notice: Establishing VPN session...
>> notice: Establishing VPN - Initiating connection...
>> state: Disconnecting
>> notice: Disconnect in progress, please wait...
>> error: VPN establishment capability for a remote user is disabled. A VPN connection will not be established.
>> state: Disconnected
根据互联网上的评论,我们尝试添加/opt/cisco/anyconnect/profile/Profile.xml
包含以下内容的配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<AnyConnectProfile xmlns="http://schemas.xmlsoap.org/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://schemas.xmlsoap.org/encoding/ AnyConnectProfile.xsd">
<ClientInitialization>
<LinuxVPNEstablishment>AllowRemoteUsers</LinuxVPNEstablishment>
</ClientInitialization>
</AnyConnectProfile>
但无济于事。
允许远程用户建立 VPN 连接的正确方法是什么?
答案1
所以事实证明AllowRemoteUser
必须进行设置在服务器端,而不是客户端。
添加
<LinuxVPNEstablishment>AllowRemoteUsers</LinuxVPNEstablishment>
VPN 服务器上的某些.xml
文件中的错误消失。
很有趣地知道
- 为什么 AnyConnect 首先区分 Windows 和 Linux 客户端
- 为什么通过 AnyConnct macOS 二进制文件从 macOS 客户端建立连接确实有效- 它们是否被视为 Windows / 完全不受限制?
答案2
经过长时间的尝试,我终于找到了适合我的 Hyper-V 情况的解决方法。
- 我在想要初始化 Cisco AnyConnect VPN 的主机上启用了 PSRemoting。
- 我在“C:\temp”中创建了一个文件“login_info”,内容如下:
连接 {vpn_endpoint} {用户名} {密码}
- 我创建了一个 powershell 脚本“any.ps1”,内容如下:
cd“c:\Program Files (x86)\Cisco\Cisco AnyConnect Secure Mobility Client”Get-Content“C:\temp\login_info”|.\vpncli.exe -s
- 然后我通过 PS Remoting 从我的系统连接到主机:
$cred = 获取凭据 Enter-PSSession -计算机名称 {hostname_or_IP} -凭据 $cred
- 我运行了“.\any.ps1”脚本。此操作使我与 PS Remoting 断开连接,但 RDP 会话仍处于活动状态。
- 我使用目录“c:\Program Files (x86)\Cisco\Cisco AnyConnect Secure Mobility Client”内的命令“vpncli.exe status”检查了状态,连接处于活动状态。