为什么亚马逊发布私钥而不是公钥?

Set*_*eth 22 sftp private-key public-key amazon-ec2

我的大脑围绕着公钥和私钥的轴。当您在 Amazon 的 EC2 服务上创建云服务器(实例)然后想要通过 SSH 连接到它时,Amazon 要求您下载私有密钥来建立连接。公钥/私钥背后的想法不是表明亚马逊应该要求您下载公共密钥吗?

此外,如果我设置了一个 SFTP 服务器供客户使用,我应该在服务器上安装他们的密钥还是从服务器上给他们一个密钥?在这两种情况下,它应该是公钥还是私钥?

Jef*_*and 36

更深入地思考认证过程,什么需要保密?亚马逊知道密钥的公共部分,任何人都可以知道公共部分。密钥对的公共部分与私有部分匹配时,表示私有部分用于进行身份验证。

亚马逊为您生成密钥对时提供给您的私钥仅在您是唯一拥有它的人时才有用。如果它不是秘密,那么知道它的任何其他人也可以向持有密钥对公共部分的任何人进行身份验证。

谁是被认证必须持有私人的一半。如果世界上的每个人都可以通过持有密钥的公共部分来验证您的身份,这是可以的,但只有您应该控制私人部分。


cjc*_*cjc 18

Amazon 提供密钥生成服务是因为某些操作系统(咳嗽、Windows、咳嗽)可能无法轻松生成 SSH 密钥对。

使用 SSH(和 SFTP),当 EC2 实例启动时,公钥安装在用户的 authorized_keys 文件中。私钥仅由用户持有,并用于向服务器进行身份验证。

从文档中:

http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-CreateKeyPair.html

亚马逊似乎在他们的服务器上生成了密钥对,并通过 HTTPS 向您发送了私钥。这可能并不完美(理想情况下,您和其他人都不会拥有私钥),但可能并非如此,因为这一切都发生在您经过身份验证的会话的上下文中,并且只有您(和亚马逊暂时)看到私钥。您还可以始终生成和上传您自己的公钥以供 EC2 使用,同时严格保密私钥。

为了设置 SFTP 用户进行密钥认证,他们应该在他们的机器上生成 SSH 密钥。一旦他们生成了一个密钥对,他们应该只向您发送公钥以安装在相关的 authorized_keys 文件中。顾名思义,私钥是私有的。

  • 我定期在 Windows 机器上生成密钥对。这并不难,尽管它是使用已安装的软件完成的,而不是由 Windows 本身完成的。 (5认同)
  • 同意多米尼克的意见。更重要的是,普通的 Windows 用户在看到 CLI 时会感到害怕和迷失,而且 Windows 仍然没有“使用 SSH 密钥登录”选项。 (2认同)