允许用户通过远程桌面连接更改过期密码


13

信息:

  • 我有一种情况,我被迫使用不属于域且没有AD的服务器(Windows 2012 R2)。这不是我的选择,不是最佳选择,而是我无法控制的。

  • 我也有本地用户通过RDP连接到此服务器,并且本地用户具有密码过期策略。

  • 由于AD / Exchange不在图片中,因此用户不会收到有关其密码即将过期的通知。

问题: 问题是用户的密码已过期并且他们尝试使用远程桌面连接登录。它不允许他们更改密码。

我从服务器端取消选中“仅允许从运行带有网络级别身份验证的远程桌面的计算机连接”,因此服务器不需要传入RDP会话中的NLA。

但是,使用Windows远程桌面连接管理器时,它似乎在强制NLA。

如果我使用的是“终端”远程桌面客户端,则客户端上有一个选项可以禁用“网络级身份验证”。如果我通过终端客户端禁用NLA,并且连接到服务器,则可以更改用户过期密码。

问题: 我做出的假设可能是错误的,即Terminals程序只是位于Windows远程桌面连接协议之上,并且如果您可以通过Terminals程序禁用网络级别身份验证客户端,那么您还应该能够通过Windows内置的远程桌面连接管理器禁用此功能。不幸的是,我在连接管理器GUI中没有看到此选项,并且在NLA专用的“ .RDP”文件中也没有看到任何参数。

如果单击客户端远程桌面连接管理器上的“关于”,它会告诉我“支持网络级身份验证”。该措辞使我相信使用它是可选的,但是再次,我看不到在连接管理器中将其关闭的方法。顺便说一句,这个特定的连接管理器是v10。


1
我编辑了您的问题(特别是标题),以关注您的基本目标,而不是提出的实现目标的方法。参见XY问题
我说恢复莫妮卡

Answers:


13

您可以通过两种方式解决此问题:

1.安装RD Web访问角色并启用远程密码更改选项

以下说明来自woshub.com:允许用户通过Windows Server 2012中的RD WebAccess重置过期的密码

在Windows 2012/2012 R2中,出现了一个选项,该选项允许远程用户使用RD Web访问服务器上的特殊网页更改密码(当前密码或过期密码)。密码将这样更改:用户以RD Web访问角色登录到服务器上的注册网页,并使用特殊形式更改其密码。

远程密码更改选项在具有远程桌面Web访问(RD Web Access)角色的服务器上可用,但默认情况下处于禁用状态。要更改密码,脚本password.aspx使用,它位于C:\ WINDOWS \网络\ RDWeb \网页\ EN-US

  1. 要启用密码更改选项,请在具有已配置RD Web访问角色的服务器上打开IIS管理器控制台,转到[服务器名称] –>站点–>默认网站–> RDWeb –>页面,然后打开“应用程序设置”部分

    在此处输入图片说明

  2. 在右窗格中,找到PasswordChangeEnabled参数并将其值更改为true

    在此处输入图片说明

  3. 您可以通过以下网页测试密码更改机制:

    https://RDSServerName/RDWeb/Pages/zh-CN/password.aspx

    在此处输入图片说明

  4. 现在,当尝试使用过期的密码连接到RD Web访问服务器时,用户将被重定向到password.aspx网页,并提供更改其密码的权限。

    在此处输入图片说明

    提示。安装特殊补丁KB2648402后,可以使用相同的Windows Server 2008 R2功能。


2.启用提示,通知用户密码即将过期

  1. gpedit.msc在RDSH服务器上运行以打开本地组策略
  2. 讨价还价 Computer Configuration\Windows Settings\Local Policies\Security Options
  3. 编辑设置“ 交互式登录”:提示用户在到期前更改密码,并指定合理的天数,例如14天。
  4. 用户(包括通过远程桌面登录的用户)将在密码到期之前收到通知。

感谢@twisty,我应该提到安装​​远程桌面服务器角色也是一种选择。但是,这对于处于类似情况的其他人来说是非常有用的信息。提示是一件好事,但是要知道!
guht

3
然后,您别无选择,只能在服务器客户端上禁用NLA,以允许它们更改密码。危险地,这大大降低了RDP连接的安全性。
我说的是恢复莫妮卡的时间

10

事实证明,这是通过.RDP配置文件中名为“ enablecredsspsupport”的未列出属性来控制的,将其设置为“ 0”,它将在RDP会话中加载登录页面,并允许用户更改其过期密码。

.RDP配置文件中所需的确切语法为:

enablecredsspsupport:i:0

如果您需要进一步的参考或阅读,请转到此处: 网络级身份验证和CredSSP的暴政


7
仅当服务器不需要NLA时,此方法才有效。否则,您会收到一条消息,指出远程计算机需要网络级别的支持,而本地计算机不支持。您应该解释此设置的实际作用,并可能引用链接文章中的一段。
simlev

1
注意:单击“远程桌面连接”中的“保存”按钮将创建配置文件Default.rdc。(单击“另存为”按钮以查看文件存储在哪个目录中。)如果默认情况下需要此设置,则是要编辑的文件。或者,您可以将其放在需要时手动打开的其他.RDP文件中。
班普(Bampfer)'18年

3

因为启用了NLA,所以没有一个选项对我有用。这是一种通过PowerShell进行更改的方法-有关无法登录RDP时如何更改自己的过期密码的完整故事。

function Set-PasswordRemotely {
    [CmdletBinding()]
    param(
        [Parameter(Mandatory = $true)][string] $UserName,
        [Parameter(Mandatory = $true)][string] $OldPassword,
        [Parameter(Mandatory = $true)][string] $NewPassword,
        [Parameter(Mandatory = $true)][alias('DC', 'Server', 'ComputerName')][string] $DomainController
    )
    $DllImport = @'
[DllImport("netapi32.dll", CharSet = CharSet.Unicode)]
public static extern bool NetUserChangePassword(string domain, string username, string oldpassword, string newpassword);
'@
    $NetApi32 = Add-Type -MemberDefinition $DllImport -Name 'NetApi32' -Namespace 'Win32' -PassThru
    if ($result = $NetApi32::NetUserChangePassword($DomainController, $UserName, $OldPassword, $NewPassword)) {
        Write-Output -InputObject 'Password change failed. Please try again.'
    } else {
        Write-Output -InputObject 'Password change succeeded.'
    }
}

只需运行Set-PasswordRemotely,它将询问您4个问题-用户名,旧密码,新密码,域控制器并为您更改密码。它也可以在非域加入的PC中使用。需要连接到DC。


您可以使用ECHO%LOGONSERVER%来获取您的域控制器,这和上面的
Powershell都
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.