去年我在 Azure 上设置了一个 Windows Server VM,几个月没登录后,最近我尝试登录,奇怪的是它告诉我密码不正确。我继续重置密码,但尽管它说成功了,却没有起作用。我也尝试了介绍的方法这里,但这也不起作用。
要明确的是:
- 我确实可以通过 Powershell 访问 VM,但重置密码没有效果。
- VM 处于活动状态并且 IIS 服务正常响应。
- RDP 已启用,服务正在响应并且正确的端口已打开。
- 连接并验证后,我收到“您的凭据无效”消息。即使在重置密码后(仔细检查用户名,并将密码复制粘贴到 Powershell 窗口进行重置,然后复制粘贴到连接对话框中),仍然出现此消息。
- 我尝试将机器名称作为域前缀 (my-vm\username),以及以点 (.\username) 作为前缀、不加前缀 (\username) 和完整的 Azure 配置文件名称 (myname.cloudapp.net\username)。
- 用户名是一个简单的字母用户名,没有任何花括号。
- 我尝试重置的密码绝对符合复杂性要求:结合大小写、数字和密码中常见的非字母数字字符,所有字符长度均超过 8 个字符。此外,我检查了用户名的任何部分是否都包含在密码中,并且该密码不是以前使用过的密码(如果这有区别的话)。
那么,这可能是什么原因造成的?我遗漏了什么吗?我还可以尝试其他步骤来重新获得对该机器的访问权限吗?现在唯一的步骤是分离磁盘并重新连接到新的 VM 并手动复制所有内容(我试图避免这种情况)吗?
答案1
检查虚拟机和本地机器上的日期和时间,确保所有设置均正确。如果您手动设置了时钟,但它们不同步,则可能会导致身份验证出现问题。
答案2
好的,幸运的是我并不急于登录这台机器,所以在过去的几周里,我一直在考虑其他进入的方法。如果其他人遇到这个问题,这里有一个我想到或发现的重新获得对无响应的虚拟机的访问权限的方法的汇总列表:
- 按照我原始问题中的链接重置密码(如果密码丢失、帐户被锁定、用户名未知等)。这会将用户名更改为指定的用户名,设置密码并解锁帐户。除非没有。
- 远程安装 VNC(例如,如果 RDP 服务中断)。如果密码有效但由于某种原因您无法通过 RDP 登录,则很好。如果使用此方法,请确保从证书存储中删除自签名证书。
- 删除虚拟机(使用“保留现有磁盘”),然后重新创建虚拟机重新连接旧磁盘(例如,如果虚拟机配置已损坏)
- 删除虚拟机(保留磁盘)并将磁盘附加到另一个 Windows 实例检查磁盘完整性、扫描病毒等。使用分离的磁盘重新创建实例。
- 删除虚拟机(保留磁盘)并附加到 Linux 实例(不要按照此链接概述的那样初始化磁盘!),然后使用离线 Linux 工具修复任何问题。
我使用了最后一种方法,终于获得了对虚拟机的访问权限。以下是详细步骤,因为我在其他地方没有看到过:
- 在与有故障的 Windows 机器相同的区域创建一个新的低规格 Ubuntu 机器。
- 通过 SSH 进入框并发出以下命令:
sudo apt-get 安装 chntpw
(如需确认)
- 使用 Azure 管理门户将 Windows VHD 挂载到 Linux VM,然后在控制台上输入以下命令:
sudo grep SCSI /var/log/syslog
这将让您了解磁盘在 /dev 目录中的位置:查找最后安装的磁盘,我的是sdc
。如果您的 Windows 磁盘有一个主分区(就像我的 VHD 的 C: 一样),那么您需要安装sdc1
:
sudo mkdir /mnt/win
sudo mount /dev/sdc1 /mnt/win
如果成功,您现在可以通过输入以下命令来查看 Windows 根文件夹:
ls -l /mnt/win
- 要使用我们安装的密码恢复工具 (chntpw),我们需要将目录更改为主 SAM 注册表配置单元所在的位置:
cd /mnt/win/Windows/System32/config
(请记住,Linux 区分大小写,即使在 Windows 驱动器上也是如此)
- 然后在 SAM 配置单元上启动密码恢复工具:
sudo chntpw -i SAM
这将带您进入交互式密码工具和注册表编辑器。输入?
以获取帮助,l
在 SAM 文件中列出用户,您可以选择用户,将密码重置为空白,解锁帐户等。这相当不言自明。重置密码很容易 - 但下一步更难!
更新完用户帐户后,退出 ( q
)并将更改写回 SAM 文件。
- 因为密码现在为空,而 Windows 默认不允许使用空密码进行远程登录,所以您还需要更改注册表项允许您无需密码即可登录。为此,您需要加载另一个配置单元并使用 chntpw 中的内置注册表编辑器(这是一份有用的指南):
sudo chntpw -i 系统
选择9
注册表编辑器,然后使用 cd 命令导航到正确的注册表项并进行编辑:
cd 当前控制集
cd 控制
光盘
限制使用空白密码
将值更改为0x0
,然后按q
退出并确保将更改写入注册表配置单元。
现在输入sudo umount /dev/win
然后注销 SSH 会话并关闭 Linux VM,然后分离 Windows VHD来自 Linux VM。
- 你现在可以从旧 VHD 磁盘创建新的 Azure VM,然后祈祷并启动机器。
请注意,这会使 VM 向任何人敞开登录的大门,因此一旦 VM 重新配置并运行,您将需要立即登录、设置新的安全密码并通过 regedit 重新启用注册表标志。 出于模糊性的原因,您可能需要使用不同的云服务名称创建虚拟机,以防现有用户在您之前偶然发现打开的 RDP 门。
祝愿处于这种情况的其他人好运,并感谢@IceMage 愿意提供帮助!