记录阿里云系统重置后操作的几个步骤。

一、新建一个sudo用户

  1. 新建一个用户
1
sudo adduser newuser

根据提示操作,输入并确认新用户的密码,以及其余信息(全名、房间号等可选项,可以直接按回车跳过)。

这个过程会同时创建一个同名的用户组和家目录 /home/newuser

  1. 将新用户添加到 sudo
1
sudo usermod -aG sudo newuser

-aG 选项表示将用户追加,-a 到指定的组 -G 中,这里是 sudo

  1. 验证新用户和 sudo 权限

首先切换到新用户:

1
2
3
4
5
# 完全登录(Login shell)
su - newuser

# 部分切换(Non-login shell)
# su newuser

输入密码后进入了 newuser 会话环境,接下来测试权限是否生效:

1
sudo whoami

若返回 root ,则 sudo 权限配置成功。

二、禁用root登录ssh

  1. 编辑 SSH 服务器配置文件
1
sudo nano /etc/ssh/sshd_config

找到关于root登录的配置行,将“yes”改为“no”:

1
2
#PermitRootLogin yes
PermitRootLogin no
  1. 保存文件并重启 SSH 服务

重启 SSH 服务:

1
sudo systemctl restart ssh

保持当前的 root SSH 会话窗口打开, 打开一个新的终端窗口,尝试用新的用户登录来测试配置是否正确。

千万不要在重启 SSH 服务后立即关闭当前的 root 会话。

测试普通用户登录:

1
ssh admin@your_server_ip

应该可以成功登录(如未成功,检查阿里云控制台端口配置)。

测试 root 登录(应该失败):

1
ssh root@your_server_ip

三、配置防火墙

  1. 检查 UFW 状态
    首先,检查防火墙当前是否处于运行状态。
1
sudo ufw status

输出通常有两种情况:

  • 不活跃 (Status: inactive):表示防火墙已安装但未启用。
  • 激活 (Status: active):表示防火墙已启用,并会显示当前生效的规则。

如果系统提示 Command 'ufw' not found ,你需要先安装它:

1
sudo apt update && sudo apt install ufw
  1. 设置默认策略(非常重要)

在启用防火墙之前,先设置默认策略。这是一个安全规范:默认拒绝所有传入连接,允许所有传出连接。

1
2
3
4
5
6
# 拒绝所有传入连接 (Deny all incoming traffic)
sudo ufw default deny incoming

# 允许所有传出连接 (Allow all outgoing traffic)
# 先不默认允许所有传出吧
# sudo ufw default allow outgoing

这条命令意味着,除非明确允许某个端口,否则所有来自外部的连接尝试都会被拒绝。

  1. 允许必要的服务(否则可能被锁在外面!)

在默认拒绝所有传入连接后,必须根据服务器运行的服务,手动放行所需的端口。

  • 必须允许的端口:SSH

这是最关键的一步! 如果启用了防火墙但没有放行 SSH 端口(默认为 22),将无法远程连接服务器。

1
2
3
4
5
# 如果你使用默认的 SSH 端口 22
sudo ufw allow ssh

# 或者直接指定端口号(效果相同)
sudo ufw allow 22/tcp

ufw allow ssh 中的 ssh 是一个服务名,UFW 通过查看 /etc/services 文件知道它对应端口 22/tcp

如果更改过 SSH 端口(例如改为 59283),则必须使用端口号来允许:

1
sudo ufw allow 59283/tcp
  • 允许其他服务(根据你的需求)

根据服务器上运行的服务,放行相应的端口。常见服务命令:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 允许 HTTP (Web 服务器,端口 80)
sudo ufw allow http
# 或 sudo ufw allow 80/tcp

# 允许 HTTPS (加密的 Web 服务器,端口 443)
sudo ufw allow https
# 或 sudo ufw allow 443/tcp

# 允许特定的其他端口,例如一个自定义的应用端口 3000
sudo ufw allow 3000/tcp

# 允许特定范围的端口 (例如 8000-8100)
sudo ufw allow 8000:8100/tcp

# 允许来自特定IP的连接(例如只允许你的办公IP管理服务器)
sudo ufw allow from 123.45.67.89 to any port 22
  1. 启用 UFW 防火墙

在确认已经至少放行了 SSH 端口之后,就可以正式启用防火墙了。

1
sudo ufw enable

系统会提示你“命令可能会破坏现有的 SSH 连接,是否继续?”。因为你已经允许了 SSH,所以可以放心地输入 y 并回车。

  1. 验证配置

启用后,再次检查状态以查看完整的规则列表:

1
2
3
4
5
6
# 查看规则列表(更直观)
sudo ufw status verbose

# 删除一条规则(例如第 3 条)
sudo ufw status numbered
sudo ufw delete 3
  1. 测试连接(极其重要!)

不要关闭当前的 SSH 会话! 打开一个新的终端窗口,尝试重新 SSH 连接到你的服务器。如果连接成功,说明 SSH 规则配置正确。如果新的连接失败,你还可以通过当前的会本来修复问题。

常用管理命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 查看带有规则编号的详细状态(用于删除规则)
sudo ufw status numbered

# 拒绝某个端口(例如拒绝 FTP 端口 21)
sudo ufw deny 21/tcp

# 删除一条规则(先通过 `status numbered` 查看编号)
sudo ufw delete [规则编号]
# 或者通过规则本身来删除
sudo ufw delete allow 80/tcp

# 禁用 UFW(防火墙仍然存在但停止工作)
sudo ufw disable

# 重置 UFW(清除所有规则并禁用它)
sudo ufw reset

四、更改 SSH 默认端口

  1. 选择一个新的、非常用的端口号(1024~65535)

  2. 配置防火墙(UFW)(如果启用)

如果服务器启用了 UFW 防火墙(推荐),则必须先允许新的端口。

1
sudo ufw allow 59283/tcp

验证新规则是否添加成功:

1
sudo ufw status verbose

应该能在输出列表中看到 59283/tcp 被允许(ALLOW)。

  1. 修改 SSH 配置文件

使用 sudo 权限编辑 SSH 守护进程的配置文件 /etc/ssh/sshd_config

1
sudo nano /etc/ssh/sshd_config

在文件中找到 #Port 22 这一行。它通常被注释掉(以 # 开头),因为 22 是默认端口。取消注释(删除行首的 #),将 22 修改为你选择的新端口号(例如 59283)。(可选但推荐)添加一行新的 Port 22 并注释掉,作为备份配置,便于将来参考。

修改后的效果应该是:

1
2
3
4
5
# 这是原来的默认端口,现已注释禁用
#Port 22

# 这是新的活动端口
Port 59283

保存并关闭文件。(在 nano 编辑器中,按 Ctrl+X,然后按 Y,再按 Enter)。

  1. 重启 SSH 服务,让新的配置生效。
1
2
3
sudo systemctl restart ssh
# 或者在某些旧系统上使用
# sudo service ssh restart

关键:保持当前的 SSH 会话窗口打开!不要注销!

For changes to take effect, run:

1
2
systemctl daemon-reload
systemctl restart ssh.socket
  1. 测试新端口连接

打开一个全新的本地终端窗口或另一个 SSH 客户端,尝试使用新端口连接到服务器,使用 -p 参数指定端口:

1
2
3
4
ssh username@your_server_ip -p 59283
# username:你的用户名
# your_server_ip:你的服务器 IP 地址
# 59283:你设置的新端口

测试成功标准:新的终端窗口能够通过新端口成功登录。

一切功能正常。

  1. 禁用旧端口(可选但推荐)

在确认新端口工作绝对正常后,可以通过防火墙禁用旧的 22 端口,增加安全性。

使用 UFW:

1
2
3
4
bash
sudo ufw deny 22/tcp
# 再次检查状态
sudo ufw status verbose

应该会看到 22/tcp (v6) 的状态变为 DENY,而新端口仍然是 ALLOW

  1. 更新 SSH 客户端配置(方便未来使用)

为了避免每次连接都要输入 -p 参数,可以在本地电脑的 SSH 客户端配置文件中为这个服务器创建一个别名。编辑本地电脑上的 ~/.ssh/config 文件(如果不存在就创建一个):

1
2
3
4
Host myserver # 一个方便的别名
HostName your_server_ip # 服务器的真实IP或域名
User username # 登录用户名
Port 59283 # 新的端口号

之后,只需要简单地输入 ssh myserver 就可以连接了。