是否可以设置 ssh 和 Active Directory(Win2008r2 风格),以便域用户无需输入密码即可访问 *nix 和在 Windows 服务器上运行的 ssh 服务器?
如果是,怎么办?
我发现一些文档这表明,通过修改 AD 模式来为公钥腾出空间,它可以(或类似的东西)成为可能。
然而,大多数概念本身对我来说都是新的,因为实际上,我是一个在开发运营团队中伪装成系统管理员的开发人员。
背景:我们有一些 Windows 机箱和一些 *nix 机箱,并且我们希望在持续部署类型场景以及从中心位置进行临时维护类型场景中在这两组机箱上运行一些远程管理自动化。
答案1
我尝试过和你一模一样的东西,特别是尝试使用相同的工具集来管理 Linux 和 Windows,结果却发现除了痛苦和沮丧之外一无所获。这两个平台在设置、外观和设计假设方面有很大不同,以至于在一个平台上运行良好的工具(SSH、PowerShell)在另一个平台上却是丑陋、脆弱的黑客工具(是的,确实存在适用于 Linux 的 PowerShell,用 Mono 编写)。这种脆弱性迫使我们为 Windows 和 Linux 系统使用两个单独的部署系统。我不知道有什么现存的一个可以同时完成这两件事的工具,尽管我知道有几个人正在坚持尝试(两者厨师和 木偶据报道,正在制定这样一个统一的管理框架,厨师已送达)。
我的建议是,特别是因为你似乎是一个 Linux 优先的组织,看看你能找到什么样的钩子来访问Windows 远程管理框架(“winrm” 是关键字)。它是基于 HTTP 的 Kerberized SOAP 调用,因此在远程系统上安装它实际上比在 Windows 机器上安装 SSH 服务器要容易得多。Ruby 有一个 gem 可以做到这一点。WinRM 很有趣,因为它是微软指定的“在远程机器上运行命令”框架,这就是您尝试使用 SSH 的目的,并且理论上提供 cmd.exe 或 PowerShell 作为命令解释器。
答案2
我有一个设置,可以间接实现某些系统的相同目的。仅通过公钥/私钥才能通过 SSH 访问目标系统。密钥存储在网络共享中,只有获得访问权限的人才能访问。有点简单粗暴,但非常有效。当然,没有什么可以阻止授权用户复制密钥,但无论如何只有受信任的用户才能访问。
答案3
另一种方法是我正在做的方式,即结合使用 samba 和 winbind 将系统添加到 aduc 并使用 kerberos 进行单点登录。如果您感兴趣,我有几个指南。