![rasdial pbk 文件出现错误 703](https://linux22.com/image/1607113/rasdial%20pbk%20%E6%96%87%E4%BB%B6%E5%87%BA%E7%8E%B0%E9%94%99%E8%AF%AF%20703.png)
我需要使用 pbk 文件和登录名/密码静默建立 VPN 连接,无需任何对话框。就像运行脚本一样 - 已连接。此外,用户不应手动创建连接,一切都应以编程方式完成。
首先,我手动创建了一个连接以检查它是否正常工作,我运行 pbk 文件,在新连接对话框中输入登录名和密码,然后单击连接按钮。连接已成功创建,VPN 正常运行。
然后我关闭连接并在 cmd 中运行以下命令:
rasdial "MyVPNName" "login" "password" /phonebook:"path\to\file.pbk"
并成功连接到 VPN。我很高兴,一切都按预期进行。但是当我在另一台电脑上运行相同的命令时,出现了 703 错误:
The connection needs information from you, but the application does not allow user interaction.
我认为它需要登录名和密码。我注意到它在命令行中忽略登录名和密码,并且可以使用错误的凭据甚至没有凭据也可以工作。我尝试使用 rasphone.exe 创建连接,但出现了创建连接对话框。当我使用该对话框创建连接时 - rasdial 命令即使在命令行中没有登录名和密码也可以工作。似乎系统存储了连接并使用已保存的凭据进行连接。
但这不是我需要的。我需要在我的应用程序中单击一下即可建立 VPN 连接。在该应用程序中,我计划运行 rasdial.exe 或其他内置实用程序,并且用户不应该看到除我的应用程序之外的任何其他对话框或手动输入登录名/密码。
我有PreviewUserPw=0在此处提到的 pbk 文件中单击即可在 Windows 10 上连接到 VPN但它没有帮助,对话框仍然会出现。
或者我可以将登录名和密码设置到 pbk 文件中?可以吗?
答案1
rasdial vpnname
在我使用 MS Windows 10、19XX、20H1、20H2 时,它运行良好,但当我升级到 21H1 时,它就停止使用基于证书的身份验证或使用已保存凭据的 VPN 配置了。
产生的错误是:
远程访问错误 703 - 连接需要您的信息,但应用程序不允许用户交互。
rasdial
在指定要使用的配置后,似乎开始需要 2 个附加参数:“用户名”和“密码”
您可以将“ * ”替换为密码,然后系统会提示您输入密码。您可以将“ * * ”替换为用户名和密码,然后系统会提示您输入用户名和密码。
但是,如果您在配置中保存了凭据,或者使用基于证书的身份验证,则这些并不是真正需要的。
您可以传递参数“ '' '' ”(没有双引号,只有两个单引号,连续 '' 表示用户名,然后是一个空格,后跟两个单引号,连续 '' 表示密码:
rasdial vpnname '' ''
考虑尝试传递“ ”作为用户名密码,看看是否可以避免您遇到的问题。
2) 如果您使用 strongswan 作为从 Windows 连接的 IPSec 隧道服务,则存在一个“错误”,导致 MS Windows“保存用户名和密码”无法正常工作。此 Windows/strongswan 问题的解决方法是更改您的 strongswan 配置,该配置有效: https://serverfault.com/questions/908098/strongswan-clients-access-rights/9081
3) 假设 IPSec 隧道...我发现使用 PowerShell 创建 VPN“连接”似乎支持保存凭据所需的一切,以便可以编写“rasdial”脚本来检查命名的 vpn 是否正在运行,如果没有,则无需提示即可启动它。该脚本过程在 Windows 10 21H1 之前有效,但需要对上述 rasdial 进行更改。
一个警告?用户第一次连接时需要指定其凭据,但如果成功,则不再提示他们。之后呢?可以使用脚本调用 rasdial 来启动 vpn。
对于 powershell 创建 vpn“连接”,无需指定 /phonebook:\path\to\pbk
使用 powershell 创建可用于 rasdial 的 vpn“连接”的示例,假设 IKEv2 和更多假设,根据需要进行更改:(PowerShell 示例)
Add-VpnConnection -Name "your-vpn-connection-name" -ServerAddress "fqdn.example.com" -TunnelType "IKEv2" -RememberCredential -AuthenticationMethod Eap -EncryptionLevel "Maximum";
然后可能会添加更多功能:
Set-VpnConnection -Name "your-vpn-connection-name" -ServerAddress "fqdn.example.com" -SplitTunneling $False -RememberCredential $True -TunnelType "IKEv2" -AuthenticationMethod Eap -UseWinlogonCredential $False -EncryptionLevel "Maximum";
然后,您可以使用 PowerShell“Set-VpnConnectionIPsecConfiguration”来设置以下内容:要使用的密码、要使用的哈希值以及更多高级功能。
4)一旦您有了命名的vpn“连接”,您应该能够:
(旧版 rasdial 不需要用户名/密码参数:)
rasdial your-vpn-connection-name
(较新的 rasdial 需要您已保存或打算保存到系统中的用户名和密码:)
rasdial your-vpn-connection-name '' ''
希望这有帮助,祝你好运!