我只是想知道,在以下情况下的最佳做法是什么:
- 工作站 - Windows
- 开发机器 - Debian
- 邮件机器 - Debian
- 生产服务器 - CentOS
- 使用单个私钥在所有机器上进行身份验证?
- 每台机器使用单个密钥吗?
第一种方式是否存在安全隐患?
答案1
SSH 密钥就像物理钥匙一样。在某些情况下,为所有锁配备一把通用钥匙是有意义的。其他时候则不然。只有您才能针对您的具体情况做出评估。
答案2
视情况而定。考虑到您可以使用密码保护私钥,如果您使用足够强的密码并保护私钥,那么在所有机器上使用相同的密钥就可以了。另一方面,我通常对同一风险类别的系统使用多个唯一密钥。例如,我使用一个密钥用于存储在加密 USB 驱动器上的生产服务器。我对开发和测试机器使用不同的密钥。此外,我不使用 ssh 密钥来授予 root 访问权限,而是授予对我的帐户的访问权限。
第一种方法的安全隐患是,如果密钥被泄露(即对手同时获得密钥和密码),那么对手就可以远程访问所有系统。由于任何类型的系统访问都更容易提升权限,因此选项 1 的风险比选项 2 更大。但是,如果您保护好密码和私钥,选项 2 才能提供更好的安全性/更低的风险。
答案3
我会在每个 Windows 工作站和 Debian 开发机器上生成一个密钥。使用密码。将密钥发布到 Debian 机器和 CentOS 生产服务器。
putty 密钥工具“PuTTYgen 还可以导出 OpenSSH 格式和 ssh.com 格式的私钥。为此,请从“转换”菜单中选择其中一个“导出”选项。导出密钥的工作方式与保存密钥完全相同(请参阅第 8.2.8 节)- 您需要事先输入密码,如果您要保存没有密码的密钥,系统会向您发出警告。”
http://the.earth.li/~sgtatham/putty/0.58/htmldoc/Chapter8.html#pubkey-puttygen
答案4
选择 #1。#2 增加了复杂性,但好处不多(特别是如果你用强密码加密你的私钥)。
此外,我应该指出,我总是建议加密您的私钥,并且您连接的每台机器都应该有自己的密钥对。这样,如果您的一台工作站被攻破、丢失等,您只需从服务器中取出该机器的公钥,而不会中断其他工作站的访问。