云服务器入门第一步(整理版)
原始资料: DigitalOcean: Initial Server Setup with Ubuntu created: 2026-06-29 15:19 整理说明: 本版本结合原始笔记和可读取的原始教程重排、补全和翻译,保留常用英文术语。
内容简要概括
这份笔记整理了新 Ubuntu 云服务器的初始安全配置流程:先用 root 登录服务器,再创建普通用户、授予 sudo 权限、开启 UFW 防火墙,并为普通用户配置 SSH 登录。最重要的原则是不要长期依赖 root 账户操作服务器,并且在关闭当前 root 会话前,必须另开一个终端验证新用户能正常 SSH 登录和执行 sudo 命令。
Ubuntu、云服务器、root、普通用户、sudo、SSH、SSH key authentication、authorized_keys、UFW、OpenSSH、防火墙、rsync、getent、/etc/passwd
目录
- 1. 初始配置的目标和顺序
- 2. 使用 root 账户首次登录服务器
- 3. 创建新的普通用户
- 4. 授予普通用户 sudo 权限
- 5. 使用 UFW 设置防火墙
- 6. 为普通用户启用 SSH 访问
- 7. 最后验证清单
- 8. 可复用命令汇总
1. 初始配置的目标和顺序
新买的云服务器通常会默认提供 root 账户,或者让用户通过控制台设置初始凭据。root 拥有最高权限,适合首次初始化,但不适合长期作为日常登录账户。更安全的做法是创建一个普通用户,让它在需要时通过 sudo 临时执行管理员命令。
推荐顺序如下:
- 用
root登录服务器。 - 创建普通用户。
- 将普通用户加入
sudo用户组。 - 配置并启用 UFW 防火墙,至少允许
OpenSSH。 - 为普通用户配置 SSH 登录。
- 另开一个终端验证新用户登录和
sudo权限。 - 确认无误后,再关闭原来的
root会话。
2. 使用 root 账户首次登录服务器
首次连接服务器时,一般使用云厂商提供的公网 IP 和 root 用户登录:
ssh root@your_server_ip
如果是第一次连接该服务器,SSH 可能会提示确认主机指纹。确认 IP 和服务器来源无误后,可以输入 yes 继续。之后根据云厂商的设置方式,输入密码或使用本地 SSH private key 完成登录。
root 登录的主要用途是完成初始化。完成普通用户和 SSH 登录配置后,日常操作应尽量切换到普通用户,并用 sudo 执行需要管理员权限的命令。
3. 创建新的普通用户
使用 adduser 创建普通用户:
adduser user_name
执行后系统会要求设置账户密码,并可填写姓名、电话等附加信息。附加信息不是必填项,不需要时直接按 Enter 跳过即可。
命令说明:
adduser: 交互式创建 Linux 用户,并自动处理 home directory、默认 shell 等常用配置。user_name: 新用户的用户名,应替换成自己的实际用户名,例如sammy或其他便于识别的名称。
3.1 查看当前服务器有哪些用户
Linux 系统里既有普通登录用户,也有很多服务运行时使用的系统账户。查看用户时要先分清自己想看的是“所有账户”还是“普通用户”。
查看系统记录的所有用户:
getent passwd
如果只想看用户名列表:
cut -d: -f1 /etc/passwd
如果只想粗略筛出普通用户,可以查看 UID 大于等于 1000 的账户:
awk -F: '$3 >= 1000 && $1 != "nobody" {print $1}' /etc/passwd
命令说明:
getent passwd: 从系统用户数据库读取用户信息,比直接读/etc/passwd更通用。/etc/passwd: 保存本机用户账户信息的文件;现代 Linux 不会把真实密码明文放在这里。cut -d: -f1: 以冒号分隔每一行,只取第 1 列用户名。awk -F: '$3 >= 1000 ...': 以冒号分隔字段,用第 3 列 UID 粗略筛选普通用户。
4. 授予普通用户 sudo 权限
创建用户后,需要把它加入 sudo 用户组:
usermod -aG sudo user_name
命令和参数解释:
usermod: 修改已有用户的属性。-a: append,表示追加到指定用户组,而不是覆盖用户原有的组。-G sudo: 指定要加入的附加用户组为sudo。user_name: 要授予权限的普通用户。
这里的关键是 -aG 要一起使用。如果只使用 -G 而没有 -a,可能会把用户从原有附加组中移除。
之后普通用户就可以通过 sudo 执行管理员命令,例如:
sudo apt update
第一次使用 sudo 时,系统通常会要求输入当前普通用户的密码。
5. 使用 UFW 设置防火墙
UFW 是 Ubuntu 上常用的防火墙管理工具。启用防火墙前,要先允许 SSH 连接,否则可能会把自己锁在服务器外面。
先查看已安装的 UFW application profiles:
ufw app list
可能看到类似输出:
Available applications:
OpenSSH
允许 SSH 连接:
ufw allow OpenSSH
启用 UFW:
ufw enable
查看当前状态:
ufw status
可能看到类似输出:
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
如果后续部署网站,还需要按服务开放端口,例如:
ufw allow 80
ufw allow 443
如果云厂商同时提供外部 Cloud Firewall,应理解服务器内部的 UFW 和云平台防火墙是两层控制。初学阶段可以先只配置一种防火墙,避免排查网络问题时混淆规则来源。
6. 为普通用户启用 SSH 访问
在确认普通用户可以稳定登录并使用 sudo 前,最好保持当前 root 终端不要关闭。这样如果配置有误,还能回到原来的会话修复。
6.1 使用密码登录
如果服务器允许 password authentication,可以直接用普通用户登录:
ssh user_name@your_server_ip
登录后测试 sudo:
sudo apt update
6.2 使用 SSH key authentication
如果服务器使用 SSH key authentication,需要把本地 public key 放到普通用户的 ~/.ssh/authorized_keys 中。
因为 root 账户通常已经能用这把 key 登录,服务器上 root 的 ~/.ssh/authorized_keys 已经存在。可以在当前 root 会话中,把整个 .ssh 目录复制给新用户:
rsync --archive --chown=user_name:user_name ~/.ssh /home/user_name
命令和参数解释:
rsync: 用于复制和同步文件。--archive: archive mode,保留目录结构、权限、时间戳等信息,适合复制.ssh这类对权限敏感的目录。--chown=user_name:user_name: 将复制后的文件 owner 和 group 都改成新用户,避免普通用户无法读取自己的 SSH 配置。~/.ssh: 当前root用户的.ssh目录。/home/user_name: 新用户的 home directory。
注意:这里的源路径应写成 ~/.ssh,不要写成 ~/.ssh/。带 trailing slash 时,rsync 会复制目录内容而不是目录本身,可能导致 authorized_keys 被放到错误位置,SSH 无法识别。
复制完成后,另开一个新终端测试:
ssh user_name@your_server_ip
然后再测试:
sudo apt update
只有在 SSH 登录和 sudo 都确认可用后,才关闭原来的 root 会话。
7. 最后验证清单
完成配置后,用下面清单快速检查:
- 普通用户已创建,并且能通过
ssh user_name@your_server_ip登录。 - 普通用户已加入
sudo组,并能成功执行sudo apt update。 - UFW 已启用,
ufw status显示OpenSSH为ALLOW。 - 如果使用 SSH key,普通用户的
/home/user_name/.ssh/authorized_keys位置和 owner 正确。 - 当前新终端确认可用后,再关闭原来的
root会话。
8. 可复用命令汇总
把下面的占位符替换成自己的真实信息:
user_name: 普通用户名。your_server_ip: 云服务器公网 IP。
# Log in as root
ssh root@your_server_ip
# Create a regular user
adduser user_name
# List server users
getent passwd
cut -d: -f1 /etc/passwd
awk -F: '$3 >= 1000 && $1 != "nobody" {print $1}' /etc/passwd
# Grant sudo privileges
usermod -aG sudo user_name
# Allow SSH through UFW and enable the firewall
ufw app list
ufw allow OpenSSH
ufw enable
ufw status
# Copy root SSH key setup to the regular user
rsync --archive --chown=user_name:user_name ~/.ssh /home/user_name
# Test regular user login from a new local terminal
ssh user_name@your_server_ip
# Test sudo privileges
sudo apt update