在亚马逊生成EC2实例的pem文件

Ans*_*ich 2 ssh amazon-s3 amazon-ec2 amazon-web-services

对于我们的生产系统,我们正在运行Amazon EC2实例.这位负责的同事(比如称他为Joe)离开了公司.

现在我们想要ssh访问我们的实例.

他给我们留下了他的私钥和公钥文件.

id_dsa
id_dsa.pub
Run Code Online (Sandbox Code Playgroud)

在后端我们可以看到,键"joe"被分配给runnning实例,ssh访问由以下命令完成:

ssh -i "joe.pem" ec2-user@11.22.11.123
Run Code Online (Sandbox Code Playgroud)

我们如何生成.pem文件?或者更一般地说,为了获得ssh访问需要做些什么?

我们需要亚马逊的证书吗?如果是这样,怎么样?

Ani*_*aul 11

用于创建New Pem键:

转到EC2 Dashboard > Key Pair>Create Key Pair

这将为pem key您下载文件.

对于SSH访问:

  1. 您可以将id_rsa.pub添加到实例~/.ssh/auth*文件中.之后,您可以使用ssh到它ssh ubuntu@ip
  2. 您可以使用与该实例关联的pem键 ssh -i "file.pem" ubuntu@ip

  • 如何将此新的 .pem 文件附加到现有的 ec2 实例@animesh (3认同)
  • 我可以下载现有的密钥对吗? (2认同)

Joh*_*ein 8

访问新实例

密钥对用于在使用亚马逊提供的标准亚马逊机器映像(AMI)时授予对新启动的Amazon EC2实例的访问权限.(来自其他地方的AMI可能有自己的登录方法.)

启动实例时,会指定密钥对.然后,EC2服务将密钥对的公共一半复制到/home/ec2-user.ssh/authorized_keys(路径可能根据所选择的AMI而变化).

然后,要连接到实例,请使用密钥对的私有部分,与您显示的完全相同:

ssh -i joe.pem ec2-user@11.22.11.123
Run Code Online (Sandbox Code Playgroud)

(ec2-user登录用于Amazon Linux实例.Ubuntu用作用ubuntu户名.)

要使用的密钥对的名称显示在管理控制台中EC2实例的信息部分中:

控制台中的密钥对

访问实例后,建议更改正在使用的密钥对,创建新用户并通常获取实例安全性的所有权.遵循组织的标准安全实践,而不是依赖启动实例时使用的密钥对.

访问现有实例

对于您的特定情况,实例已经启动ssh,授予访问权限的密钥对可能(或可能不是!)是首次启动实例时使用的密钥对.

您还提到您可以看到它们的键joe与实例相关联.在这种情况下,您应该尝试查找joe.pem并登录该实例.如果找不到该文件,请尝试使用该id_dsa文件.

如果这些都不起作用,那么问题就是两件事之一:

  • 您没有启动实例时使用的密钥对,或者
  • 实例本身的密钥对已更改(根据安全建议)

最重要的是,如果没有密钥对,则无法ssh进入实例.

恢复访问权限

最糟糕的情况是,如果你不能ssh到实例,你仍然可以解决问题.一般步骤是:

  • 停止实例(让我们称之为实例A)
  • 分离启动卷(让我们称之为卷A)
  • 启动一个新实例,或选择一个现有实例(让我们称之为实例B)
  • 卷A 附加到实例B.
  • 登录到实例B并将新的公钥对复制.ssh/authorized_keys卷A上的文件
  • 从实例B 卸载分离卷A.
  • 卷A 附加到实例A.
  • 启动实例A.

您现在应该能够ssh进入实例.

一些参考: