Wanzul Blog

Notes, opinions, and lessons I paid for.

Recovery when blocked SSH

不小心封锁 SSH 连接后如何恢复

如果你使用第三方控制面板来管理服务器,通常会有设置防火墙规则的配置选项。如果你不小心把端口 22 的访问权限从白名单中移除,服务器就会变得无法管理。为避免这种情况,你应该事先做好以下准备。

假设你还没有被锁在服务器外,仍然可以进行 SSH 连接,以下是你可以做的事。否则,请跳到下一节。

如何把自己锁在自己的实例外 🤣

设置具有 sudo 访问权限的用户 👨‍💼

第一步是创建新用户。将 newuser 替换为你偏好的用户名。

$ adduser newuser

最后,将该用户加入 sudo 组,以授予管理权限。

$ usermod -aG sudo newuser
如何创建具有 sudo 访问权限的用户,以及如何通过 AWS EC2 访问控制台。

因此,如果你不小心从防火墙白名单中移除了 SSH,你可以使用控制台连接到服务器,并以该用户登录,把 SSH 端口(22)重新加入防火墙白名单。

$ sudo ufw allow 22/tcp

大多数云服务提供商允许通过控制台访问实例。我可以独立确认,AWS EC2 和 IPServerOne Nova Cloud 能够通过控制台访问实例。

通过控制台访问意味着连接终端并不是通过端口 22 建立的。相反,它有点类似于我们使用串行线缆物理连接到服务器。

任何拥有服务器控制台物理/虚拟访问权限的人都可以暴力破解登录。务必设置强密码!

你已经无法通过 SSH 登录。该怎么办?🤔

步骤如下:

  1. 从服务器卸载存储
  2. 将存储挂载到新的恢复实例
  3. 在防火墙配置中添加允许 SSH 的规则
  4. 从恢复实例卸载存储
  5. 将存储重新挂载回原服务器

在防火墙配置中添加允许 SSH 的规则

注意:“…” 表示存在已被截断的代码。

文件位置:/mnt/<mount>/etc/ufw/user.rules

...
### RULES ###
...
### tuple ### allow any 22 0.0.0.0/0 any 0.0.0.0/0 in

-A ufw-user-input -p tcp --dport 22 -j ACCEPT

-A ufw-user-input -p udp --dport 22 -j ACCEPT
### END RULES ###

添加后,服务器将允许传入的 SSH 连接。

你需要卸载卷,才能将其挂载到恢复实例
然后,将卷挂载到恢复实例
这就是如何挂载并修改 Ubuntu ufw 防火墙,将 SSH(端口 22)加入白名单 😇

或者,你也可以先禁用简单防火墙(ufw),然后运行 ufw allow 22/tcp 命令。


不小心封锁 SSH 连接时没什么好担心的。总有办法恢复访问。😉

Wan Zulkarnain 的头像

Written by 

Comments

发表回复