我目前正在进行一个项目,为 30 个用户维护一个带有某些简单服务(邮件、Web)的服务器。我想使用公钥/私钥,但我不确定它们的用途。每个用户都必须拥有自己的私钥和公钥吗?每个用户都有不同的公钥,然后在服务器计算机上有一个私钥?还是只向每个用户分发一个公钥和一个私钥?我真的想确保我理解并完全学习这个重要概念!谢谢大家!
答案1
公钥/私钥适用于管理多台服务器的管理员
假设您在居住在不同城市的各个家庭成员的计算机上安装了 Ubuntu。他们定期打电话给您修理他们的计算机。您想远程连接到这些计算机并进行修理。这时您可能需要使用公钥/私钥。公钥将发送到您各个家庭成员的计算机上。私钥安全地保存在您手中。您可以将公钥提供给任何人,而不会存在任何安全风险。如果您叔叔的计算机被盗,并且您的公钥被盗,您不必担心。只需复制一份公钥并将其放入您叔叔的新计算机中即可。
这不是您想象中的操作模型。您有 30 个用户访问一台服务器。因此每个用户都需要一对单独的公钥和私钥。也就是 30 个私钥和 30 个公钥。
公钥/私钥不适用于普通邮件和网络服务
ssh
协议中使用公钥/私钥对。我认为它们不适用于邮件和网络服务。有一种情况是在邮件中使用公钥/私钥对。这是用于 PGP 或 GPG 加密,其中邮件的接收者可以确定它来自发件人。假设你正在计划推翻你的总统。你想向你的 30 位关注者发送加密电子邮件。最重要的是,你的关注者必须 100% 确定该电子邮件来自你,而不是来自试图破坏你计划的其他人。你创建私钥/公钥对,并将公钥的副本提供给你的 30 位关注者。你使用私钥加密你的电子邮件。如果你的关注者可以使用你的公钥解密你的电子邮件,他们将 100% 确定它来自你。这与你或你的关注者如何访问邮件服务器无关。加密/解密在你/关注者的计算机中完成。
综上所述...
除非您计划(1)让 30 个用户使用ssh
协议通过命令行访问服务器,或者(2)您希望所有用户使用端到端加密电子邮件,否则公钥/私钥不适合您描述的情况。
如果您设想(1)或(2),那么每个用户都需要创建自己的私钥/公钥对。
对于情况(1),所有 30 个公钥都需要存储在ssh
每个用户都有权连接的服务器中。
对于情况 (2),每个用户都需要创建自己的私钥/公钥对。然后每个用户都需要他们的自己的私钥以及所有其他 29 个用户的公钥能够阅读该组中其他用户的加密电子邮件。
希望这可以帮助
答案2
答案3
Would each user have to have their own private and public key?
如果您想要基于密钥的登录,并且该用户需要登录到服务器,那么用户应该拥有自己的公钥和私钥对。
`Each user has a different public key and then one private key on the server machine?Or just one public key distributed to each user and one private key?`
每个用户都有自己的公钥和私钥对。私钥是“私人的”,您不能与任何人共享私钥。而公钥顾名思义是“公开的”,可以与任意数量的服务器共享。
假设您的帐户在 10 台服务器上使用相同的用户名(这很重要),您只需创建一个密钥对。现在您的私钥将只保留在您的计算机上,您需要将相同的公钥复制到 10 台服务器的主目录中。现在,当您尝试ssh
进入其中任何一台服务器时,您将能够无需密码登录。要记住的一点是密钥对username
不是用户计算机的属性,因此您也可以在另一台计算机上使用用户的私钥foo
(假设没有密码来解锁密钥),该计算机具有相同的用户名foo
进入ssh
服务器。
这里是如何设置基于密钥的身份验证。