EC2 实例在连接期间总是要求我输入 pem 的密码

EC2 实例在连接期间总是要求我输入 pem 的密码
  1. pem 文件由AWS 控制台生成
  2. 我能够使用 EC2 远程 Web 界面进行连接,使用相同的 pem 文件
  3. pem的权限已经是600了

错误..

ssh -i ~/test.pem -v [email protected]

debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Trying private key: /home/john/test.pem
debug1: PEM_read_PrivateKey failed
debug1: read PEM private key done: type <unknown>
Enter passphrase for key '/home/john/test.pem':

有人可以帮忙吗?

答案1

如果在 2 个或更多 ec2 实例之间共享私钥,并且如果您尝试从 ec2 上的 ssh 连接建立 ssh 连接,请使用记事本在本地计算机上打开 .pem 文件,并将内容复制到您在 ssh 终端中创建的新 .pem 文件中。它将 100% 正常工作,并且不会要求您输入任何密码。

如果您使用其他文本编辑器(即 VSCode)打开本地 .pem 文件,则在尝试使用新的 .pem 文件时系统会要求您输入密码。

答案2

最有可能的是你的test.pem已经被破坏了。

检查是否运行正常openssl rsa -check -in test.pem -noout

它应该显示“RSA key ok”

答案3

我也曾多次遇到过这个问题,并找到了一种对我有用的解决方案,希望对你也有用。大多数情况下,当我们从另一个 ec2 实例(例如实例 2)通过 ssh 连接到 ec2 实例(例如实例 1)时,即从本地计算机通过 ssh 连接,我们需要一个私钥文件,即“.pem”文件来验证实例 2 的身份,以连接到实例 1。当我们将 .pem 文件的内容从本地计算机复制到实例 2 时,有时会发生这种情况,我们在文本编辑器中打开 .pem 文件并复制内容,当我们将文件内容粘贴到在实例 2 中创建的文件中时,我们使用其他文本编辑器复制它。问题就在这里出现。

解决方案是-> 始终在两台机器上使用相同的文本编辑器来复制和粘贴 .pem 文件的内容,否则格式将会改变,您会遇到麻烦。

答案4

我遇到了同样的问题,我试图从公共 ec2 实例 ssh 到私有 ec2 实例,但我一直收到“输入密钥 <> 的密码”“权限被拒绝(公钥)。”错误。

我所做的是使用 PuttyGen 从 .pem 文件创建一个 .ppk,然后将该 .ppk 文件的内容复制粘贴到使用 vi 编辑器创建的新文件中。然后我尝试使用此文件进行 ssh。当我在 vi 编辑器中再次打开它时,我意识到文件内容有误,它与最初下载的 .pem 文件不一样。因此,我删除了错误的文件,将 .pem 文件的内容复制粘贴到使用 vi 编辑器创建的新文件中,然后成功地从我的公共实例 ssh 到我的私有实例。

相关内容