几天前我已经设置了 EC2 实例,甚至昨晚我也能够毫无问题地通过 SSH 连接到它。今天早上,我无法通过 ssh 连接到它。端口 22 已经在安全组中打开,并且从昨晚开始我没有更改任何内容。
错误:
ssh: connect to host [ip address] port 22: Connection refused
我最近遇到了类似的问题,我无法弄清楚为什么会发生这种情况,因此我必须创建一个新实例,再次设置它,然后将所有 EBS 存储连接并配置到新实例。我花了几个小时……现在又发生了。在前一个中,我安装了 denyhost
,这可能会阻止我,但在当前的一个中,只有 apache2 和 mysql 正在运行。
当前实例已经运行了 16 小时,所以我不认为这是因为它没有完成启动...此外,端口 22 对所有源 (0.0.0.0/0) 开放并正在使用TCP 协议(protocol)。
有什么想法吗?
谢谢。
最佳答案
在@abhi.gupta200297的帮助下,我们能够解决这个问题。
问题是 /etc/fstab
中的错误,sshd 应该在 fstab
成功后启动。但事实并非如此,因此 sshd 无法启动,这就是它拒绝连接的原因。解决方案是创建一个临时实例,从原始实例挂载根 EBS,然后注释掉 fstab 中的内容,瞧,它让我再次连接。对于 future ,我只是停止使用 fstab
并创建了一堆 shell 命令来将 EBS 卷安装到目录中,并将它们添加到 /etc/init.d/ebs-init-mount
文件,然后运行 update-rc.d ebs-init-mount defaults
来初始化该文件,我不再遇到锁定 ssh 的问题。
2015 年 4 月 23 日更新
亚马逊团队创建了类似问题的视频教程,并展示了如何使用此方法进行调试:https://www.youtube.com/watch?v=_P29ZHu_feU
关于apache - 正在运行的 EC2 实例突然拒绝 SSH 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14026148/