云服务器上手实践:Linux 实例初始化、SSH 安全加固与 Docker 环境配置

举报
yd_294916736 发表于 2026/10/22 00:22:32 2026/10/22
【摘要】 Linux 实例初始化、SSH 安全加固与 Docker 环境配置

前言

拿到一台全新的云服务器后,很多人会直接开始装软件,结果过几天就发现:SSH 被暴力破解、端口直接暴露在公网、环境依赖互相冲突。实际上,从“能登录”到“适合长期开发”,中间有一套很值得固化的初始化流程。

本文以 Ubuntu 22.04 LTS 为例,整理一套可以直接复用的云服务器初始化实践。文中命令同样适用于华为云 ECS 等主流云主机,重点是思路和顺序,而不是某个平台特有的按钮位置。

一、创建普通用户,避免长期使用 root

首次通过控制台或 SSH 登录后,先创建一个日常使用的账号:

adduser deploy
usermod -aG sudo deploy

之后所有开发操作都用 deploy 用户完成,只有系统级配置才使用 sudo。这样既降低误操作风险,也方便审计和权限回收。root 账号只保留给救援和控制台使用。

二、配置 SSH 密钥登录

在本地生成密钥对(如果还没有):

ssh-keygen -t ed25519 -C "deploy@dev"

把公钥上传到服务器:

ssh-copy-id deploy@<服务器IP>

先确认免密登录成功,再修改服务器端配置。编辑 /etc/ssh/sshd_config.d/10-hardening.conf:

PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes

检查配置语法并重载服务:

sudo sshd -t
sudo systemctl reload ssh

这里有一个常见坑:一定不要先关密码登录再测试密钥,否则很容易把自己锁在服务器外面。云厂商控制台的 VNC 登录可以作为兜底,但最好还是按“先验证、后关闭”的顺序操作。

三、用防火墙收口暴露面

Ubuntu 自带 ufw,配置成本很低:

sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw status verbose

原则是只放行确实需要的端口。数据库端口(3306、5432、6379 等)不要直接对公网开放,应通过内网访问或 SSH 隧道连接。同时别忘了在云平台的安全组里做同样的限制——主机防火墙和安全组是两层独立防护,缺一不可。

四、安装 Docker 与 Compose

使用 Docker 官方源安装,后续升级更方便:

sudo apt update
sudo apt install -y ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \
  sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo $VERSION_CODENAME) stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

把当前用户加入 docker 组,免去每次 sudo:

sudo usermod -aG docker $USER
newgrp docker

验证安装:

docker run --rm hello-world
docker compose version

五、跑一个示例服务验证链路

用 Nginx 验证端口、防火墙和容器网络是否打通:

docker run -d --name web --restart unless-stopped -p 80:80 nginx:stable

浏览器访问服务器公网 IP,看到 Nginx 欢迎页就说明整条链路正常。生产环境更推荐用 Compose 管理,配置可以纳入版本控制:

services:
  web:
    image: nginx:stable
    restart: unless-stopped
    ports:
      - "80:80"
    volumes:
      - ./conf.d:/etc/nginx/conf.d:ro

六、几项容易被忽略的日常维护

  • 开启自动安全更新:sudo apt install unattended-upgrades && sudo dpkg-reconfigure -plow unattended-upgrades
  • 定期查看登录失败记录:sudo journalctl -u ssh --since "1 day ago" | grep -i failed
  • 重要数据不要只放在系统盘,按需挂载数据盘并配置快照
  • 用 docker system df 定期清理无用镜像和容器,避免磁盘被占满
  • 修改任何远程配置前,先保留一个可用的 SSH 会话,不要一次性断开所有连接

小结

云服务器初始化的核心可以概括为三件事:最小权限、最小暴露面、可复现的环境。把上面这些步骤整理成初始化脚本或云初始化(User Data),下次开新机器时几分钟就能得到一台安全、可用的开发环境。比起每次手动重复,这种一次性投入的收益会随着机器数量增加而放大。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。