我需要通过 SSH 从多个设备连接到多个服务器。我想知道我是否应该在连接的每台设备上创建一个新的 id_dsa 文件,或者将相同的 id_dsa 文件复制到每台设备是否有问题。
例如,我有一台基于 Ubuntu 的主桌面系统和一台安装了 ssh 的 MacBook Pro。还有一台安装了 Putty 的基于 Windows 的上网本。还有一部安装了 ConnectBot 的 Android 手机。从这些设备中的任何一台,我可能需要通过 SSH 连接到数十个不同的物理和虚拟服务器。
每个服务器都需要安装我的公钥。此外,我的 GitHub 和 Codaset 帐户也需要我的公钥。
为了简化密钥管理,我考虑在所有这些系统上使用相同的私钥。这是常见做法吗?还是在每个系统上都使用一个私钥更好?
答案1
如果您在每个系统上使用相同的公钥,而私钥被泄露,那么任何使用该密钥的系统(除非有其他限制)都可以访问。
我相信您正在使用受密码保护的私钥?
在我们的管理实践中,我们有低、中、高安全“角色”。每个角色使用不同的密钥。高安全性私钥永远不会被传输到外部资产,也不会用在可能丢失/被盗的笔记本电脑上等。中、低安全性密钥可以部署在更广泛的场景中。
我建议检查一下你的使用模式,看看从安全角色的角度来看,这样做有什么意义。获取你的私钥会造成什么损害?
您是否考虑过将 SSH 私钥放到无法被盗的硬件设备上,从而消除密钥泄露的潜在问题?
硬件安全模块和智能卡都可用于以安全的方式存储 SSH 私钥,从而允许在设备上执行所有加密操作,而不是在操作系统上执行。然而,它们并不是万能的,因为它们也需要备份硬件设备,以防硬件故障。
答案2
当然应该。您可以随时将所有密钥添加到您的 authorized_keys2 文件中。我喜欢 jeffatrackaid 的建议。但是,我会为每个设备使用不同的私钥 - 为什么不呢。丢失您的 Android。很简单,从授权密钥列表中删除密钥。如果不这样做,您将不得不再次重新生成该级别的密钥。
也就是说,这取决于你如何看待这些资产的风险。显然,你不想丢失密钥,但有些密钥可能会面临更大的风险,例如 github 与 vps 的根目录。
答案3
你还记得 Debian 在生成 SSH 密钥时遇到的那个小熵问题吗?那时我吸取了教训。
我有自己的私钥,用于我自己的东西,比如进入我的个人服务器。我有我的“万能”密钥,可以进入我的大部分开发箱,然后为我服务的每个客户分配密钥。
我还保存了一份非常详细的清单,列出每台机器上的哪些按键,以防我需要紧急更换或移除它们。
对于其他所有严重问题,我只使用 LDAP / PAM,以防万一必须删除某人别的匆忙。