供应商选择:优先选台湾或邻近区域的数据中心以降低延迟;比较带宽、可用快照、快照价格、备份策略与客服响应时间。
实例规格:根据业务选择 CPU/RAM/磁盘(建议系统盘使用 SSD,Web 服务起步 1 核 2GB 内存)。
镜像与系统:推荐 Ubuntu LTS(如 20.04/22.04)或 CentOS/ Rocky;本文用 Ubuntu 命令示例。
在控制台创建实例时,选择“创建并注入 SSH 公钥”。如果没有密钥,在本地生成:ssh-keygen -t rsa -b 4096 -C "you@domain"
将 ~/.ssh/id_rsa.pub 内容粘贴到控制台。在本地用:ssh -i ~/.ssh/id_rsa ubuntu@服务器IP 测试登录(用户名根据镜像可能为 ubuntu/centos/root)。
创建用户并加入 sudo:sudo adduser deploy; sudo usermod -aG sudo deploy
把你的公钥复制到新用户:sudo mkdir /home/deploy/.ssh && sudo chmod 700 /home/deploy/.ssh && sudo sh -c 'cat >> /home/deploy/.ssh/authorized_keys' && sudo chmod 600 /home/deploy/.ssh/authorized_keys && sudo chown -R deploy:deploy /home/deploy/.ssh
编辑 /etc/ssh/sshd_config,设置 PermitRootLogin no、PasswordAuthentication no(修改后 sudo systemctl restart sshd)。
修改端口:在 /etc/ssh/sshd_config 中更改 Port 22 为例如 2222,然后 sudo ufw allow 2222/tcp(或 firewall-cmd)。
限制用户:在 sshd_config 添加 AllowUsers deploy 或 AllowGroups sshusers,重启 sshd 并确保防火墙规则正确,否则可能被锁定。
手动更新:sudo apt update && sudo apt upgrade -y;安装常用工具:sudo apt install -y vim htop git curl unzip
启用自动安全更新:sudo apt install -y unattended-upgrades && sudo dpkg-reconfigure --priority=low unattended-upgrades(或编辑 /etc/apt/apt.conf.d/50unattended-upgrades)。
UFW 基本策略:sudo ufw default deny incoming; sudo ufw default allow outgoing
允许必要端口:sudo ufw allow 2222/tcp(SSH自定义端口); sudo ufw allow 80/tcp; sudo ufw allow 443/tcp; sudo ufw enable
查看状态:sudo ufw status verbose。若使用 CentOS,可用 firewall-cmd --permanent --add-port=2222/tcp 然后 firewall-cmd --reload。
安装:sudo apt install -y fail2ban
最小配置:复制默认配置 sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local,编辑 jail.local,在 [sshd] 区块开启 enabled = true,设置 bantime = 3600、maxretry = 5;重启 sudo systemctl restart fail2ban。
问:如何为服务器快速申请并部署免费证书?
答:安装 Certbot:sudo apt install -y certbot;如果用 Nginx:sudo apt install -y python3-certbot-nginx,然后运行 sudo certbot --nginx -d yourdomain.com 执行自动配置;若无 Web 服务可用 standalone 模式:sudo certbot certonly --standalone -d yourdomain.com,之后手动配置 Web 服务器指向 /etc/letsencrypt/live/yourdomain.com/fullchain.pem 与 privkey.pem。别忘了 sudo certbot renew --dry-run 验证自动续期,并添加到 cron 或 systemd timer(Certbot 安装通常会自动创建)。
问:新手应如何保证数据不丢失?
答:结合云厂商快照与异地备份。步骤示例:1) 定期在控制台创建磁盘快照(如每天或每周);2) 使用 rsync 将重要目录(/var/www /etc /home)备份到另一台(rsync -a --delete /var/www user@backup-ip:/backup/www);3) 数据库导出脚本(mysqldump)加入 cron:0 2 * * * /usr/bin/mysqldump -u root -p'密码' dbname > /backup/db/dbname_$(date +\%F).sql;4) 测试恢复流程,确保快照可以还原并能启动实例。
问:遭遇入侵或服务不可用我该怎么做?
答:第一步隔离:在控制台关掉公网权限或关闭实例网络;保存证据(保留日志 /var/log/auth.log /var/log/syslog);从快照恢复到隔离环境做取证;若可恢复服务,用最近的干净快照或备份恢复服务并更改所有密钥与密码;加强安全后再将流量切回生产。长期措施包括部署监控(Prometheus/Netdata)、日志聚合(ELK/Graylog)和入侵检测(AIDE、rkhunter)。