我有一个应用程序已经在 EC2 上成功运行了几年。该系统是 Ubuntu 18.04.2 LTS (GNU/Linux 4.15.0-1032-aws x86_64)。
这是一个低流量的小而简单的应用程序。直到今天,我才对服务器本身进行任何更改。我想处理 X packages can be updated.
消息,所以我跑了:
sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade
然后我跑了sudo reboot
.重新启动后,应用程序运行完美。我可以通过公共(public) URL 正常访问它并查看内容,包括 db(直接在服务器上的 postgresql)数据,没有问题或意外。但是,当我再次尝试 ssh 进入机器时,我做不到。我愿意
ssh -i "key.pem" -vvv ubuntu@<IP>
并得到:debug1: Connecting to <IP> [<IP>] port 22.
debug1: connect to address <IP> port 22: Operation timed out
ssh: connect to host <IP> port 22: Operation timed out
没有对安全组进行任何更改。此外,这是一个如此小的项目,我从未设置过 EC2 Instance Connect 或类似的东西。我曾想过启动一个新的 EC2 并只是切换 EBS 卷,认为 EBS 会带来应用程序和数据,而实例本身将具有配置和权限。
我对此(显然)不太了解,并且惊讶地发现 EBS 卷本身似乎是问题所在并且持有所有卡片。
我可以在两个 EC2 实例之间来回切换 EBS 卷。在任何给定时间,无论哪个具有最新(因此为空白)的 EBS 卷附加在
/dev/sda1
允许 SSH 但肯定不会运行该应用程序。而且,反之亦然:无论哪个 EC2 实例具有原始 EBS 卷,都可以完美地运行应用程序,但让我无法访问 ssh。在这种情况下,问题是:如何让其中一个 EC2 实例绕过此 EBS 问题并自行决定是否允许我连接 ssh?
或者:我在这里遗漏的明显和/或愚蠢的事情是什么?
PS:我确实有弹性IP来解决所有这些问题,所以DNS似乎不是问题的根源。
最佳答案
在 John Rotenstein 的帮助下,我能够解决这个问题。
以下是核心步骤:
阶段 1 - 附加和挂载附加卷
根据约翰的评论,可以从“好”卷启动实例,然后附加并安装“坏”卷。这使我能够浏览文件并查找问题。
AWS 面板
root
附加到 EC2 实例通过使用 /dev/sda1
姓名 终端
~$ df -hT /dev/xvda1
~$ lsblk
~$ df -hT /dev/xvdf1
~$ sudo su -
~$ mkdir /addvol
~$ mount /dev/xvdf1 /addvol
~$ ls -la /addvol/home/ubuntu
现在我可以查看和导航附加卷的内容、查找配置文件、查看授权 key 、文件权限等。This article from AWS帮了我很多忙。
终于到了这一点,我找不到任何 key 或权限等问题。约翰将我指向this article dealing with Ubuntu's firewall things。 .
第 2 阶段 - 处理防火墙
我从 the article 运行了一些命令并试图了解它们是如何工作的。
一旦我掌握了一点,我决定使用卷上现有的重启脚本来确保防火墙可以通过 SSH 连接。
我更新了现有的自定义重启脚本,添加了以下几行:
sudo ufw allow ssh
sudo ufw allow 22
sudo ufw disable
sudo ufw --force enable
基本上它要求允许 ssh 两次,一次按名称,然后按端口。我是这个东西的新手,只是为了矫枉过正。然后它会禁用并启用防火墙,以确保它在配置了这些新闻内容的情况下运行。
因为
sudo ufw enable
需要交互,我选择使用sudo ufw --force enable
.第 3 阶段 - 测试和使用它!
脚本更新后,我退出了服务器。
AWS 面板:
终端:
注意:在真正 100% 工作之前,我的电脑提示
known_hosts
事物。服务器 key 必须在更新/升级和/或所有卷更改之后发生更改。我不认为必须确认主机是什么大不了的,所以我通常只是清除本地.ssh/known_hosts
中的所有内容。文件。如果您更喜欢具体,您可以在那里专门找到服务器的信息并仅删除相关行。
关于linux - 无论/dev/sda1 中的 EBS 如何,如何使 AWS EC2 允许 ssh 连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68255064/