将 Windows AD 机器授权传递给 Linux VM?

将 Windows AD 机器授权传递给 Linux VM?

尝试了好几个小时才得到这个(甚至没有必要,但我不知何故迷失在“区域”中并决心这样做)在没有关于整个 AD 基础设施的任何线索的情况下工作,现在我已经没有主意了。

我有一台工作用的 win10 机器,它已注册到我们的 Active Directory 域,因此已经注册。但是,由于我更喜欢​​在 Linux 机器上工作,所以我在虚拟机内运行 Linux,并且基本上每天都使用它。我只想使用一个简单的用例,让 Linux 用户与我的 AD 用户同步,就像在 Windows 中一样。

我已经设置好了,这样域名在 Linux 中就正确了,我可以用 realm discover 很好地解析域名。然后我可以用 kinit /“在线帐户”(ubuntu)功能为我的 forename.surename 帐户获取票证,但我无法超越这一点。

我尝试使用 msktutil 来获取 keytab 文件,但总是遇到一些权限问题。然后我尝试加入领域,比如 realm join -u forename.surname --computer-ou='' ,在将我的 linux 主机名更改为与我的 windows pc 相同的主机名后,这个方法看起来还不错。但随后也失败了,因为加入领域的过程显然需要为计算机帐户设置一个随机密码,而我没有权限。

然后我想,嘿,我的 Windows 主机上已经有了所有的票证和所有东西,难道我不能以某种方式将它们传递给 Linux VM 吗?这就是我目前所处的位置,但似乎我必须从处理器空间中提取票证,我真的不认为这是工作机器上的选项。还有其他我现在没有看到的可能性吗?谢谢你的帮助,我显然不知道我在做什么,但是嘿,问问也没什么坏处吧?:)

我们也有用于 SSO 的 ADFS 实现,但似乎没有可以让我仅使用 ADFS 服务器进行登录/身份验证的实现。

答案1

我只是想要一个简单的用例,让 Linux 用户与我的 AD 用户同步,就像在 Windows 中一样。

Windows 帐户的大多数“本地”属性实际上并不适用于单用户 Linux 系统。您的主目录路径将有所不同,您的组成员身份在本地无关紧要,AD 帐户可能没有为您的 POSIX 登录 shell 配置字段,因此它将默认为 /bin/sh,等等。唯一值得“同步”的是用于访问各种网络服务的 Kerberos 票证 - 您已经可以使用kinitpam_krb5(或 GNOME 在线帐户,一旦带有 Kerberos 修复的 v44.0 推出)来执行此操作,而无需完全加入域。

我的 Windows 主机上已经有了所有票证和所有内容,难道我不能以某种方式将它们传递给 Linux VM 吗?这就是我目前所处的位置,但似乎我必须从处理器空间中提取票证,我不认为这在工作机器上是一种选择。

Windows 将其计算机帐户密码存储为“LSA 机密”。如果您的管理员尚未为 LSASS.EXE 部署额外的保护(顺便说一句,只是通过上周的 Windows 更新,Windows 11 默认启用了 LSA 密钥 (已在上周的 Windows 更新中启用),您可以使用多种工具之一转储 LSA 机密并复制机器密码,然后将ktutil其存储在 /etc/krb5.keytab 的密钥表形式中 (和/或 SSSD 或 Winbind 可能需要的任何其他格式)。

请注意,Windows 和 Linux(SSSD/Winbind)都会每 30 天左右更改一次机器密码,因此请确保至少在 Linux 端禁用它。(一般来说,这就是它成为坏的在两个系统之间使用相同主机名的想法——如果您不小心禁用所有自动机器密码更改,您很快就会发现在尝试登录时出现“域信任关系失败”错误。)

相关内容