SSH到AWS EC2问题 - key_load_public:没有这样的文件或目录

时间:2016-05-25 08:38:44

标签: linux macos amazon-web-services ssh amazon-ec2

不幸的是,3小时的谷歌搜索并没有帮助我解决这个问题,而且我指望那些可以通过这一切行走的人。

我的情况

我几个月来一直在从我的mac成功地进入我的AWS实例。即使在今天它仍然有效。这在逻辑上消除了所有与设置相关的问题,例如确保我打开端口22,指向0.0.0.0/0,具有正确的用户名(其ubuntu不是ec2用户),正确许可我的pem文件等。

然后我的mac挂起,我重启mac,突然间我再也不能ssh了。我甚至无法通过直接从aws控制台启动的java客户端进入ssh。 aws控制台上的利用率和其他状态检查看起来很好。

这是我的-vvv,其中包含个人信息:

OpenSSH_6.9p1, LibreSSL 2.1.8
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 21: Applying options for *
debug2: ssh_connect: needpriv 0
debug1: Connecting to <myip> [<myip>] port 22.
debug1: Connection established.
debug1: key_load_public: No such file or directory
debug1: identity file /Users/<myfilepath>/ipythonswyx1.pem type -1
debug1: key_load_public: No such file or directory
debug1: identity file /Users/<myfilepath>/ipythonswyx1.pem-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.9
ssh_exchange_identification: read: Operation timed out

我认为很明显 debug1:key_load_public:这里没有这样的文件或目录。但是a)为什么会突然停止工作? b)即使我再次修改了pem文件,它仍然显示此错误?

我可以在网上找到的唯一其他解决方案就是删除这个实例,然后重新设置 - 我非常想保留这个实例。

你可以建议我应该google或我可以运行的任何其他诊断吗?作为这样一个n00b的问题是我甚至不知道要问的正确问题或如何描述我的问题而不是&#34;这件事现在起作用并不起作用,我没有为什么&#34;。 HELP。

1 个答案:

答案 0 :(得分:6)

以用户身份打开shell

输入此命令

find $HOME -name ipythonswyx1.pem -print

这应该找到钥匙的路径。如果它没有其他可能性:

  • 该键的名称与上面输出中显示的名称不同
  • 密钥位于其他用户帐户下
  • 密钥被意外删除

假设找到了密钥,请记下路径并将其用作参数&#34; identityfile&#34;在ssh上。因此,假设路径为/Users/Bob/.ssh/ipythonswyx1.pem且主机IP地址为54.3.4.5,请尝试此命令

ssh -i /Users/Bob/.ssh/ipythonswyx1.pem ubuntu@54.3.4.5

如果找不到密钥,则需要创建一个新实例,从旧磁盘分离EBS卷,将旧EBS卷附加到新实例,向&#34; .ssh /添加新密钥的authorized_keys&#34;在旧EBS卷上为ubuntu用户提供文件,然后将其卸载并重新连接到旧实例。

有关此事件序列的更多信息(更改密钥),请参阅serverfault上的此答案https://serverfault.com/questions/273664/how-do-i-change-the-key-pair-of-an-aws-instance-if-i-lost-my-pem-file 更详细地说明https://aws.amazon.com/articles/5213606968661598

中的分步说明