记录阿里云系统重置后操作的几个步骤。
一、新建一个sudo用户
- 新建一个用户
1 | sudo adduser newuser |
根据提示操作,输入并确认新用户的密码,以及其余信息(全名、房间号等可选项,可以直接按回车跳过)。
这个过程会同时创建一个同名的用户组和家目录 /home/newuser 。
- 将新用户添加到
sudo组
1 | sudo usermod -aG sudo newuser |
-aG选项表示将用户追加,-a到指定的组-G中,这里是sudo组
- 验证新用户和
sudo权限
首先切换到新用户:
1 | # 完全登录(Login shell) |
输入密码后进入了 newuser 会话环境,接下来测试权限是否生效:
1 | sudo whoami |
若返回 root ,则 sudo 权限配置成功。
二、禁用root登录ssh
- 编辑 SSH 服务器配置文件
1 | sudo nano /etc/ssh/sshd_config |
找到关于root登录的配置行,将“yes”改为“no”:
1 | #PermitRootLogin yes |
- 保存文件并重启 SSH 服务
重启 SSH 服务:
1 | sudo systemctl restart ssh |
保持当前的 root SSH 会话窗口打开, 打开一个新的终端窗口,尝试用新的用户登录来测试配置是否正确。
千万不要在重启 SSH 服务后立即关闭当前的 root 会话。
测试普通用户登录:
1 | ssh admin@your_server_ip |
应该可以成功登录(如未成功,检查阿里云控制台端口配置)。
测试 root 登录(应该失败):
1 | ssh root@your_server_ip |
三、配置防火墙
- 检查 UFW 状态
首先,检查防火墙当前是否处于运行状态。
1 | sudo ufw status |
输出通常有两种情况:
- 不活跃 (Status: inactive):表示防火墙已安装但未启用。
- 激活 (Status: active):表示防火墙已启用,并会显示当前生效的规则。
如果系统提示 Command 'ufw' not found ,你需要先安装它:
1 | sudo apt update && sudo apt install ufw |
- 设置默认策略(非常重要)
在启用防火墙之前,先设置默认策略。这是一个安全规范:默认拒绝所有传入连接,允许所有传出连接。
1 | # 拒绝所有传入连接 (Deny all incoming traffic) |
这条命令意味着,除非明确允许某个端口,否则所有来自外部的连接尝试都会被拒绝。
- 允许必要的服务(否则可能被锁在外面!)
在默认拒绝所有传入连接后,必须根据服务器运行的服务,手动放行所需的端口。
- 必须允许的端口:SSH
这是最关键的一步! 如果启用了防火墙但没有放行 SSH 端口(默认为 22),将无法远程连接服务器。
1 | # 如果你使用默认的 SSH 端口 22 |
ufw allow ssh 中的 ssh 是一个服务名,UFW 通过查看 /etc/services 文件知道它对应端口 22/tcp。
如果更改过 SSH 端口(例如改为 59283),则必须使用端口号来允许:
1 | sudo ufw allow 59283/tcp |
- 允许其他服务(根据你的需求)
根据服务器上运行的服务,放行相应的端口。常见服务命令:
1 | # 允许 HTTP (Web 服务器,端口 80) |
- 启用 UFW 防火墙
在确认已经至少放行了 SSH 端口之后,就可以正式启用防火墙了。
1 | sudo ufw enable |
系统会提示你“命令可能会破坏现有的 SSH 连接,是否继续?”。因为你已经允许了 SSH,所以可以放心地输入 y 并回车。
- 验证配置
启用后,再次检查状态以查看完整的规则列表:
1 | # 查看规则列表(更直观) |
- 测试连接(极其重要!)
不要关闭当前的 SSH 会话! 打开一个新的终端窗口,尝试重新 SSH 连接到你的服务器。如果连接成功,说明 SSH 规则配置正确。如果新的连接失败,你还可以通过当前的会本来修复问题。
常用管理命令
1 | # 查看带有规则编号的详细状态(用于删除规则) |
四、更改 SSH 默认端口
选择一个新的、非常用的端口号(1024~65535)
配置防火墙(UFW)(如果启用)
如果服务器启用了 UFW 防火墙(推荐),则必须先允许新的端口。
1 | sudo ufw allow 59283/tcp |
验证新规则是否添加成功:
1 | sudo ufw status verbose |
应该能在输出列表中看到 59283/tcp 被允许(ALLOW)。
- 修改 SSH 配置文件
使用 sudo 权限编辑 SSH 守护进程的配置文件 /etc/ssh/sshd_config。
1 | sudo nano /etc/ssh/sshd_config |
在文件中找到 #Port 22 这一行。它通常被注释掉(以 # 开头),因为 22 是默认端口。取消注释(删除行首的 #),将 22 修改为你选择的新端口号(例如 59283)。(可选但推荐)添加一行新的 Port 22 并注释掉,作为备份配置,便于将来参考。
修改后的效果应该是:
1 | # 这是原来的默认端口,现已注释禁用 |
保存并关闭文件。(在 nano 编辑器中,按 Ctrl+X,然后按 Y,再按 Enter)。
- 重启 SSH 服务,让新的配置生效。
1 | sudo systemctl restart ssh |
关键:保持当前的 SSH 会话窗口打开!不要注销!
For changes to take effect, run:
1 | systemctl daemon-reload |
- 测试新端口连接
打开一个全新的本地终端窗口或另一个 SSH 客户端,尝试使用新端口连接到服务器,使用 -p 参数指定端口:
1 | ssh username@your_server_ip -p 59283 |
测试成功标准:新的终端窗口能够通过新端口成功登录。
一切功能正常。
- 禁用旧端口(可选但推荐)
在确认新端口工作绝对正常后,可以通过防火墙禁用旧的 22 端口,增加安全性。
使用 UFW:
1 | bash |
应该会看到 22/tcp (v6) 的状态变为 DENY,而新端口仍然是 ALLOW。
- 更新 SSH 客户端配置(方便未来使用)
为了避免每次连接都要输入 -p 参数,可以在本地电脑的 SSH 客户端配置文件中为这个服务器创建一个别名。编辑本地电脑上的 ~/.ssh/config 文件(如果不存在就创建一个):
1 | Host myserver # 一个方便的别名 |
之后,只需要简单地输入 ssh myserver 就可以连接了。