密码、SSH 密钥与 API Key 的安全管理

用强口令、SSH 密钥和受控的 API Key 守住你服务器与账户的每一道入口。

访问服务器与账户的凭据一旦泄露,攻击者就能绕过你所有的防火墙和安全组。凭据管理不是一次性设置,而是贯穿始终的习惯。本文分三类讲清怎么做。

强口令与密码管理器

弱口令是被爆破攻破的头号原因。给账户密码定几条底线:

  • 长度优先,至少 16 位,不要用生日、常见单词或 admin123 之类。
  • 每个账户用互不相同的密码,一处泄露不会波及全线。
  • 用密码管理器(如 Bitwarden、KeePassXC、1Password)生成并保存,不要写在便签或明文文件里。
  • 给控制台、邮箱等关键账户开启两步验证(2FA/TOTP)。

SSH 密钥优于密码

登录 Linux 服务器应尽量用 SSH 密钥而非密码。密钥更长、更难爆破,还能免去每次输密码。

生成一对密钥(推荐 ed25519),并给私钥设置 passphrase:

ssh-keygen -t ed25519 -C "[email protected]"
# 提示 "Enter passphrase" 时务必输入一个口令,别留空

把公钥安装到服务器,之后就能用密钥登录:

ssh-copy-id -i ~/.ssh/id_ed25519.pub user@your-server-ip
ssh user@your-server-ip

几条实践原则:

  • 按机器/用途分密钥:笔记本、工作站、CI 各用一把,撤销时互不牵连。
  • 私钥(/.ssh/ided25519)只保存在本机,权限设为 600,绝不上传或群发。
  • 验证密钥可登录后,在服务器上关闭密码登录:把 /etc/ssh/sshdconfig 里的 PasswordAuthentication 改为 no,再执行 sudo systemctl restart ssh。
  • 人员离职或设备丢失,及时撤销:删掉服务器 /.ssh/authorizedkeys 里对应的那一行公钥。

API Key / Token 的管理

API Key 等同于一段可编程的密码,泄露后可被直接调用你的账户。

  • 绝不写进代码仓库。把 Key 放进环境变量或专用密钥管理(如 Vault、云厂商的 Secrets Manager),在 .gitignore 里排除 .env:
export API_KEY="你的密钥"
echo ".env" >> .gitignore
  • 最小权限:只授予该 Key 完成任务所需的范围,能只读就不给写。
  • 定期轮换:每隔几个月或人员变动时重新签发,并停用旧 Key。
  • 若不慎把 Key 提交进了 Git,改历史不够用——必须立即在平台侧吊销并重新签发,因为它可能已被抓取。

泄露后的处置

发现凭据可能外泄时,按顺序快速处置:

  • 立即吊销/轮换受影响的密码、密钥或 Token,让旧凭据失效。
  • 检查访问与审计日志,确认有无异常登录或调用。
  • 为关键账户补上 2FA,收紧权限范围。
  • 复盘泄露途径(误提交、共享明文、钓鱼),堵住源头。

小结

强口令配密码管理器守住账户;SSH 密钥加 passphrase、按用途分发并及时撤销,取代脆弱的密码登录;API Key 走环境变量或密钥管理、最小权限、定期轮换,绝不进代码仓库。真出事时,第一动作永远是吊销与轮换,而非侥幸观望。把这些做成习惯,你的服务器和账户就少了绝大多数被攻破的机会。