几天前我已经设置了EC2实例,甚至昨晚我也能够没问题地连接到它。今天早上,我不能说。端口22已在安全组中打开,自昨晚以来我没有改变任何内容。
错误:
ssh: connect to host [ip address] port 22: Connection refused
我最近有类似的问题,我无法弄清楚它为什么会发生,所以我不得不创建一个新实例,再次设置它,并连接并配置所有EBS存储到新的。花了我几个小时......现在又发生了。在前一个中,我安装了denyhost
,这可能阻止了我,但在当前版本中,只有apache2和mysql正在运行。
当前实例已经持续了16个小时,所以我认为这不是因为它没有完成启动...而且,端口22对所有源(0.0.0.0/0)开放并且正在使用tcp协议。
有什么想法吗?
感谢。
答案 0 :(得分:26)
在@ abhi.gupta200297的帮助下,我们能够解决它。
问题是/etc/fstab
中的错误,sshd应该在fstab
成功后启动。但事实并非如此,sshd不会启动,这就是它拒绝连接的原因。解决方案是创建一个临时实例,从原始实例安装根EBS,并注释掉fstab
中的内容,然后让我再次连接。对于将来,我刚刚停止使用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
答案 1 :(得分:7)
看起来sshd可能因某种原因而停止了。实例EBS是否受到支持?如果是这种情况,请尝试将其关闭并重新启动。这应该可以解决问题。
此外,您是否能够从AWS Web控制台进行ssh?他们有一个java插件来ssh进入实例。
答案 2 :(得分:6)
对于那些遇到此帖子的人,因为您在重新启动后无法通过SSH连接到您的EC2实例,this is cross-posted到a similar question at serverfault:
来自the AWS Developer Forum post on this topic:
尝试停止损坏的实例,分离EBS卷,然后 将其作为辅助卷附加到另一个实例。一旦你有了 将损坏的卷安装在另一个实例的某处,检查 / etc / sshd_config文件(靠近底部)。我有一些RHEL实例 Yum在sshd_config中插入了重复的行 由于语法错误导致sshd在启动时失败的底部。
一旦你修好它,只需卸下音量,分离,重新连接即可 你的另一个实例并重新启动它。
让我们通过指向AWS文档的链接来解决这个问题:
cd /etc/ssh
sudo nano sshd_config
ctrl-v
多次到达文件的底部ctrl-k
底部的所有行提及" PermitRootLogin无密码"和" UseDNS no" ctrl-x
和Y
保存并退出已修改的文件cd /etc
sudo nano rc.local
ctrl-x
和Y
保存并退出已修改的文件答案 3 :(得分:4)
在Red Hat EC2实例上发生了这种情况,因为每次启动我的实例时,这两行都会自动附加到/ etc / ssh / sshd_config文件的末尾:
PermitRootLogin无密码
使用DNS没有
其中一个追加操作没有换行,所以sshd_config文件的尾部看起来像:
PermitRootLogin without-password
UseDNS noPermitRootLogin without-password
UseDNS no
这导致sshd无法在下次发布时启动。我认为这是由此处报告的错误引起的:https://bugzilla.redhat.com/show_bug.cgi?id=956531解决方案是删除sshd_config文件底部的所有重复条目,并在结尾添加额外的换行符。
答案 4 :(得分:1)
转到您的AWS管理控制台>选择实例>右键单击并选择“获取系统日志” 这将列出出错的地方。
答案 5 :(得分:0)
我通过分离EBS锁定了类似的ssh,但忘了修改/ etc / fstab
答案 6 :(得分:0)
有同样的问题,但是系统日志中有此内容:
以sshd开头:/ var / empty / sshd必须由root拥有,而不是组或世界可写。 [失败]
使用与上述相同的步骤分离卷并连接到可连接实例。然后使用:
sudo chmod 755 / var / empty / sshd
sudo chown root:root / var / empty / sshd
然后分离并重新附加到原始EC2实例,现在可以通过ssh进行访问。
答案 7 :(得分:0)
如果您的ubuntu有systemd
,则可以编辑/lib/systemd/system/local-fs.target
并注释掉最后两行:
#OnFailure=emergency.target
#OnFailureJobMode=replace-irreversibly
我还没有对此进行广泛的测试,也不知道是否存在任何风险或副作用,但是到目前为止,它仍然具有吸引力。它会安装根卷和所有其他卷(显然,那些配置错误的卷除外),然后继续启动过程,直到SSH启动为止,因此您可以连接到实例并修复错误的fstab
条目。>
答案 8 :(得分:0)
在我的情况下,卷空间不足,服务无法启动。我使用了AWS tutorial(摘自Sherzod的文章)将其安装在良好的EC2实例上,在重新安装并验证一切正常之前将其清理并从启动中删除该服务。