Debian服务器配置指南:新手也能完成的初始化与安全加固
拿到一台刚装好 Debian 的服务器后,第一件事不是装网站环境,而是把系统更新到最新、创建一个日常使用的普通用户、把 SSH 改成密钥登录,再打开防火墙。
这套流程能挡住绝大多数针对默认端口的暴力破解,也能避免日后用 root 直接操作带来的风险。
下面按顺序操作即可,命令都在 Debian 12 环境下验证过思路,其它版本差异会单独说明。
先确认你能登录以及系统处于什么状态
用服务商提供的初始密码,通过本地终端登录:
ssh root@你的服务器IP
登录后先看两件事:系统版本和当前用户。
cat /etc/debian_version
whoami
预期结果是输出类似 12.5 的版本号,以及 root。
如果连不上,优先检查安全组是否放行了 22 端口、IP 是否填错,而不是急着改服务器配置。
更新系统并装好常用工具
Debian 的软件源默认可用,先刷新索引再升级:
apt update && apt upgrade -y
如果提示 Release file is not valid yet,通常是服务器时间不对,先执行 timedatectl 看时间,再同步:
apt install -y systemd-timesyncd
systemctl enable --now systemd-timesyncd
顺手装上后面会用到的工具:
apt install -y sudo curl vim ufw
sudo 用来让普通用户临时提权,ufw 是防火墙的前端工具,比直接写 iptables 规则简单得多。
创建普通用户并配置 SSH 密钥
长期用 root 登录风险高,新建一个用户:
adduser deploy
usermod -aG sudo deploy
adduser 会交互式让你设置密码,usermod 把这名用户加入 sudo 组,之后就能用 sudo 执行管理命令。
随后在本地电脑生成密钥对(如果你已有可跳过):
ssh-keygen -t ed25519 -C "deploy@debian"
把公钥传到服务器:
ssh-copy-id deploy@你的服务器IP
验证密钥登录是否成功:
ssh deploy@你的服务器IP
能免密进入,说明密钥生效。先别关闭当前 root 会话,留一条后路,万一新用户登录失败还能救回来。
加固 SSH 并启用防火墙
编辑 SSH 配置:
sudo vim /etc/ssh/sshd_config
找到并修改这几项,没有就手动加上:
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
改完先检查语法再重启,避免配置写错把自己锁在外面:
sudo sshd -t
sudo systemctl restart ssh
sshd -t 没有输出代表语法正确。
然后配置防火墙,只放行 SSH 和后续要用的端口:
sudo ufw allow OpenSSH
sudo ufw enable
sudo ufw status
ufw status 显示 Status: active 且列出 OpenSSH 规则,说明防火墙已生效。
容易踩坑的地方
改 SSH 配置前一定保留一个已登录的会话。 新开一个终端测试密钥登录成功,再关闭旧会话,这是最稳妥的顺序。
PasswordAuthentication no 生效后,密码登录会立即失效。 如果你还没配好密钥就改了这一项,可能直接失去访问权限,只能通过服务商的 VNC 控制台救援。
防火墙不要先 enable 再想放行 SSH。 正确顺序是先 ufw allow OpenSSH,再 ufw enable,否则可能把自己挡在外面。
时区不对会影响日志和定时任务。 用 sudo timedatectl set-timezone Asia/Shanghai 设置,再用 date 确认。
怎么确认配置真的生效了
逐项检查比凭感觉更可靠:
whoami在普通用户会话下应输出deploy,执行sudo whoami应输出root。- 新开终端用
ssh deploy@IP能免密登录,说明密钥生效。 sudo sshd -T | grep -E 'permitrootlogin|passwordauthentication'应显示no和no。sudo ufw status verbose能看到放行规则和默认策略。timedatectl的 Time zone 一栏显示Asia/Shanghai。
任何一项不符合预期,就回到对应小节重新检查,不要跳过验证直接进入下一步。
常见疑问
改完 SSH 后连不上怎么办? 通过服务商控制台的 VNC 或救援模式登录,把 sshd_config 改回允许密码登录,重启 SSH 后再排查密钥问题。
一定要禁用 root 登录吗? 不是强制,但从安全角度建议禁用。
如果某些自动化脚本依赖 root,可以保留 PermitRootLogin prohibit-password,只允许密钥不允许密码。
ufw 和云服务商的安全组冲突吗? 两者是叠加关系,安全组在网络层,ufw 在系统层,两层都要放行对应端口才能访问。
普通用户执行 sudo 提示不在 sudoers 文件里? 说明没加入 sudo 组,用 root 执行 usermod -aG sudo 用户名 后重新登录即可。
完成以上步骤后,这台 Debian 服务器就具备了基本的安全基线:系统已更新、日常操作走普通用户、SSH 只接受密钥、防火墙处于开启状态。
后续安装 Nginx、数据库或面板时,只需在 ufw 中放行对应端口即可。
如果你正在处理 Debian 服务器配置,建议先完整走一遍这套初始化流程,再根据自己的业务做调整。