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

swy*_*wyx 6 linux macos ssh amazon-ec2 amazon-web-services

不幸的是,3小时的谷歌搜索对我没有帮助,我指望那里的人能够通过这一切行走'nix noob'.

我的情况

几个月来,我一直在从我的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
Run Code Online (Sandbox Code Playgroud)

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

我可以在网上找到的唯一其他解决方案是删除这个实例,只是从头开始重新设置 - 我非常想保留这个实例.

你可以建议我应该google或我可以运行的任何其他诊断吗?作为这样一个n00b的问题是我甚至不知道要问的正确问题或如何描述我的问题,而不是"这件事现在起作用并不起作用,我没有任何想法的原因".救命.

Vor*_*ung 6

以用户身份打开shell

输入此命令

find $HOME -name ipythonswyx1.pem -print
Run Code Online (Sandbox Code Playgroud)

这应该找到你的密钥的路径.如果没有,还有其他一些可能性:

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

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

ssh -i /Users/Bob/.ssh/ipythonswyx1.pem ubuntu@54.3.4.5
Run Code Online (Sandbox Code Playgroud)

如果未找到密钥,则需要创建一个新实例,从旧磁盘分离EBS卷,将旧EBS卷附加到新实例,为ubuntu的".ssh/authorized_keys"文件添加新密钥旧EBS卷上的用户然后卸载它并重新连接到旧实例.

有关此事件序列的更多信息(更改密钥),请参阅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