原始笔记

云服务器入门第一步(整理版)

云服务器入门第一步(整理版)

原始资料: DigitalOcean: Initial Server Setup with Ubuntu created: 2026-06-29 15:19 整理说明: 本版本结合原始笔记和可读取的原始教程重排、补全和翻译,保留常用英文术语。

内容简要概括

这份笔记整理了新 Ubuntu 云服务器的初始安全配置流程:先用 root 登录服务器,再创建普通用户、授予 sudo 权限、开启 UFW 防火墙,并为普通用户配置 SSH 登录。最重要的原则是不要长期依赖 root 账户操作服务器,并且在关闭当前 root 会话前,必须另开一个终端验证新用户能正常 SSH 登录和执行 sudo 命令。

Ubuntu、云服务器、root、普通用户、sudoSSHSSH key authenticationauthorized_keysUFWOpenSSH、防火墙、rsyncgetent/etc/passwd

目录


1. 初始配置的目标和顺序

新买的云服务器通常会默认提供 root 账户,或者让用户通过控制台设置初始凭据。root 拥有最高权限,适合首次初始化,但不适合长期作为日常登录账户。更安全的做法是创建一个普通用户,让它在需要时通过 sudo 临时执行管理员命令。

推荐顺序如下:

  1. root 登录服务器。
  2. 创建普通用户。
  3. 将普通用户加入 sudo 用户组。
  4. 配置并启用 UFW 防火墙,至少允许 OpenSSH
  5. 为普通用户配置 SSH 登录。
  6. 另开一个终端验证新用户登录和 sudo 权限。
  7. 确认无误后,再关闭原来的 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 显示 OpenSSHALLOW
  • 如果使用 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

Switch to English