我丢失了运行 11.04 的 VM 的密码,但可以通过公钥认证进行 ssh 访问。
有什么方法可以让我无需重启即可重置密码?(这是为了避免正在运行的服务停机。)
答案1
你可以,如果你:
知道root密码,执行
su -
并输入root密码。但直接以 root 账户进行身份验证默认禁用(并且不受支持,尽管可能)在 Ubuntu 中,所以您可能无法做到这一点。
sudo
无需密码即可访问。sudo passwd youruser
可以登录另一个管理帐户,然后使用
sudo
该帐户更改第一个帐户的密码。无需输入密码即可使用 PolicyKit 执行操作(例如通过
psexec
)。这种情况不太可能发生,但很容易尝试。尝试一下。psexec passwd youruser
基本上,您需要以某种方式获取 root 访问权限。
如果您有权访问 VM 控制台,则您在那里拥有 root 权限(例如 XEN: xm console vm-name
)。
至少从理论上讲,您可以复制虚拟机,安装(未运行)副本的驱动器,从中转储密码哈希值/etc/shadow
,然后破解它们,以发现您的密码。如果您记得一些有关密码的信息,那么一个好的密码破解程序(通常是专有的付费软件)应该能够使用该信息来避免检查不可能是密码的密码。
但是,除非你的密码非常简单,或者你对密码非常了解,并且有转储和破解密码哈希的经验,除非极度需要避免停机,否则你不应该尝试这样的事情。(事实上,我主要是为了完整性而提出这一点,这样你就能看到合理的选择真的已经用尽了。)相反,如果你无法在虚拟机中成为 root 并且无法使用虚拟机控制台,你应该重新启动虚拟机,启动到恢复模式,然后重置密码。