为AWS EC2实例创建私钥



目前我有一台电脑被正确设置为通过SSH连接到我的EC2 instane,但我也在尝试连接另一台笔记本电脑。当我去AWS控制台下载另一个密钥对并在终端到SSH中使用它时,我得到了这个错误:权限被拒绝(公钥)。

我已经尝试执行命令chmod 400 /path/sshkey.pem,但仍然出现公钥错误。有人知道为什么会这样吗?

非常感谢!

p.s.我对ec2实例执行的SSH命令是:ssh -i /path/sshkey.pem ec2-user@ip.compute.amazonaws.com

我不完全清楚这里的场景,但我认为你是在说你按以下顺序做事:

  1. 使用密钥对#1创建EC2实例
  2. 创建新的密钥对(#2)
  3. 将密钥对#2的私钥放在新笔记本电脑上
  4. 尝试登录到实例

如果这就是您所描述的,那么问题是密钥对#2的公钥从未安装在EC2实例上。您需要客户端上的私钥,以及连接到的服务器上的匹配公钥。

一旦实例已经存在,在AWS中创建新的密钥对将不会更新现有实例上的密钥。您必须登录到它(使用密钥对#1),并将新的公钥放在适当的位置。

我自己已经有一段时间没有这样做了,但根据这个页面,你可以编辑~ec2-user/.ssh/authorized_keys(一个文本文件),并将密钥对中的公钥(也是文本格式)附加到文件的末尾。您可能需要重新启动sshd守护进程,命令sudo /sbin/service sshd restart应该这样做。但请先尝试使用新密钥登录;如果你在编辑文件时出错,你可能会把自己锁在门外。(创建一个新帐户并更新其.ssh/authorized_keys更安全,以避免错误地锁定ec2用户帐户。)

如果您正在创建ubuntuec2实例,您应该使用登录

ssh-i/path/to/my_private_key.pemubuntu@public-ip-address

此外,将pem文件复制到~/.ssh/文件夹也是一种很好的做法,正如您所提到的,"ro"权限仅限于用户。