我可以通过用户名和密码通过 RDP 连接到虚拟机,但不能使用 CAC。我收到错误“您尝试连接的远程计算机需要 NLA,但无法通过 NLA 联系您的 Windows 域控制器。您可以尝试使用您的用户名和密码连接到远程计算机。”
如果有帮助的话,我尝试进行 RDP 会话的计算机与域控制器不在同一个域上。
答案1
听起来你仍然使用 NTLM 进行基于密码的身份验证。使用 NTLM,只有服务器需要到达 DC;客户端不需要任何特殊的东西。因此,能够使用密码登录并不能证明你是能够访问 DC;这仅证明 RDP 服务器能够访问。
但是,证书(智能卡)身份验证需要 Kerberos(它使用 PKINIT)。对于 Kerberos 来说,情况正好相反——客户需要与 KDC 对话以获取票证,然后将其呈现给服务器。
因此默认情况下,客户端必须能够通过 Kerberos 的 88 TCP+UDP 端口到达 DC(并且很可能还通过 CLDAP 的 389 UDP 端口到达“DC 定位器”...),这通常意味着 VPN。
另一种方法是设置 HTTP Kerberos 代理(根据 MS-KKDCP);每个 AD DC 都可以充当 KKDCP 服务器,但也可以在某些 Linux 机器上运行小型 Python 代理,并且在客户端,您可以在 .RDP 文件中指定代理 URL。这样就无需公开任何 UDP 端口。