![Mac 客户端可以通过 RDP 连接到服务器,但 Windows 客户端无法连接](https://linux22.com/image/697923/Mac%20%E5%AE%A2%E6%88%B7%E7%AB%AF%E5%8F%AF%E4%BB%A5%E9%80%9A%E8%BF%87%20RDP%20%E8%BF%9E%E6%8E%A5%E5%88%B0%E6%9C%8D%E5%8A%A1%E5%99%A8%EF%BC%8C%E4%BD%86%20Windows%20%E5%AE%A2%E6%88%B7%E7%AB%AF%E6%97%A0%E6%B3%95%E8%BF%9E%E6%8E%A5.png)
我们有一个 Windows Server 2008 R2 系统,无法通过 RDC 从 Windows 系统远程访问(我尝试过 Windows 10、Windows 7、Windows 2012 R2,但都没有成功)。矛盾的是,运行 MacBook 的系统管理员能够使用适用于 Mac 的 MS RDP 客户端进行连接。
在检查 WireShark 跟踪时,我发现失败的会话如下:
- 客户端-SYN
- 服务器——SYN、ACK
- 客户端-确认
- 客户端-RDP
- 服务器-确认
- 服务器-RST,ACK
上面的“RDP”数据包包含以下信息:
- TPKT 版本 3
- PDU 类型:CR 连接请求
- 类型:RDP 协商请求
- requestedProtocols:支持 TLS 安全、支持 CredSSP、支持早期用户授权结果 PDU
对于 Mac,我看到的协商过程如下:
- 客户端——SYN、ECN、CWR
- 服务器——SYN、ACK
- 客户端-确认
- 客户端 - RDP(Cookie:= .\username,协商请求)[第一次尝试]
- 服务器-确认
- 服务器-RST,ACK
- 客户端——SYN、ECN、CWR
- 服务器——SYN、ACK
- 客户端-确认
- 客户端 - RDP(Cookie:= .\username,协商请求)[自动重试]
- (正常 RDP 流量,我可以连接并且正常工作)
这第一次尝试RDP 数据包如下所示:
- TPKT 版本 3
- PDU 类型:CR 连接请求
- 类型:RDP 协商请求
- requestedProtocols:支持 TLS 安全、支持 CredSSP、支持早期用户授权结果 PDU
这自动重试RDP 数据包丢弃请求的协议:
- TPKT 版本 3
- PDU 类型:CR 连接请求
- 类型:RDP 协商请求
- 请求的协议:空的
此时,我正在尝试弄清楚如何让 Windows RDP 客户端像 Mac 客户端一样重新协商。我还没有成功。以前有人遇到过这种情况吗?
其他背景信息:
- 我尝试过从 Windows 10 和 Windows 7 进行连接,结果相同
- 我受到的限制是无法更改 2008 R2 服务器上的 RDP 设置(极其有限的更改控制窗口)。
答案1
我经常遇到这种情况,在发布问题后很快就找到了答案。在与相关 Windows Server 的系统管理员交谈时,我发现:
- TLS 1.0 已禁用,以满足安全合规性要求
- RDP 配置为允许来自任何版本的 RDP 客户端的连接(NLA 已禁用)
通过这些信息,我发现了一篇关于如何禁用 RDP 6.0 的凭据提示它揭示了可以配置来解决该问题的“隐藏”设置。
解决方案:
- 将 RDP 会话保存到 .rdp 文件
- 在文本编辑器中编辑 .rdp 文件(我使用 Notepad++)
将以下行添加到文件末尾:
negotiate security layer:i:0 authentication level:i:0 enablecredsspsupport:i:0 prompt for credentials:i:0
保存文件
- 双击 .rdp 文件以打开连接。