温馨提示×

Debian SSH如何备份数据

小樊
48
2025-11-19 04:15:26
栏目: 智能运维

Debian SSH 数据备份实用指南

一 备份范围与准备

  • 明确要备份的内容:SSH/SFTP 服务配置、服务器主机密钥、认证相关文件、用户数据与日志,以及远程主机之间的传输与自动化脚本。
  • 准备与加固:
    • 使用 SSH 密钥认证 替代口令,提升安全性与可自动化性(生成密钥并将公钥分发到目标主机)。
    • 备份操作建议在维护时段进行,避免对线上业务产生影响;对关键目录先做一次全量备份,再考虑增量或定时备份。

二 本地备份 SSH 配置与密钥

  • 备份配置文件与目录:
    • 配置文件:/etc/ssh/sshd_config,以及可选的 /etc/ssh/sshd_config.d/
    • 认证与 PAM:/etc/passwd/etc/shadow/etc/pam.d/sshd
    • 主机密钥:如 /etc/ssh/ssh_host_rsa_keyssh_host_ecdsa_keyssh_host_ed25519_key(用于保证客户端信任与主机身份)。
    • 示例命令:
      • 单文件:sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
      • 目录:sudo cp -r /etc/ssh /etc/ssh_backup_$(date +%F)
      • 认证文件:sudo cp /etc/passwd /etc/passwd.bak;sudo cp /etc/shadow /etc/shadow.bak;sudo cp /etc/pam.d/sshd /etc/pam.d/sshd.bak
  • 备份日志(便于审计与排障):
    • 建议归档 /var/log/auth.log/var/log/syslog(可按日期轮转后再备份)。
  • 校验与保留策略:
    • 校验:ls -l 查看备份文件;必要时用 tar 校验或 md5sum 生成校验值。
    • 保留:按日期命名备份目录/文件,保留最近 7–30 天 并定期清理旧备份。

三 远程备份与传输

  • 通过 SSH 管道打包传输(适合一次性备份到远端):
    • 备份到远端:tar czf - /path/to/data | ssh user@remote “cat > /backup/data.tar.gz
    • 从远端恢复:ssh user@remote “cat /backup/data.tar.gz” | tar xzf - -C /restore/dir
  • 使用 rsync 增量同步(适合持续/定期备份):
    • 本地到远端:rsync -avz --delete /path/to/data user@remote:/backup/data/
    • 远端到本地:rsync -avz --delete user@remote:/backup/data/ /local/backup/
  • 使用 SFTP/SCP 进行文件级备份与回传:
    • SFTP:交互式上传/下载,适合小批量或人工挑选文件。
    • SCP:scp file user@remote:/path;scp -r dir user@remote:/path
  • 自动化与免密:
    • 配置 SSH 免密登录 后,将上述命令放入脚本,并用 cron 定时执行(如每日 02:00)。

四 自动化与定时备份脚本

  • 示例脚本 backup_ssh.sh(本地全量备份 + 远端同步):
    • 内容:
      • #!/bin/bash set -e DATE=$(date +%F) BACKUP_DIR=“/backup/ssh_$DATE” REMOTE=“user@remote” REMOTE_DIR=“/backup/ssh”

        sudo mkdir -p “$BACKUP_DIR” sudo cp -r /etc/ssh “$BACKUP_DIR/” sudo cp /etc/passwd /etc/passwd.bak sudo cp /etc/shadow /etc/shadow.bak sudo cp /etc/pam.d/sshd /etc/pam.d/sshd.bak sudo tar czf “$BACKUP_DIR/ssh_config_$DATE.tar.gz” -C “$BACKUP_DIR” ssh rsync -avz --delete “$BACKUP_DIR/” “$REMOTE:$REMOTE_DIR/” ls -lh “$BACKUP_DIR”

    • 赋权与定时:
      • chmod +x backup_ssh.sh
      • crontab -e 添加:0 2 * * * /path/to/backup_ssh.sh
  • 建议将敏感备份加密(如 GPG)后再传输或落盘,并妥善管控私钥与备份存储权限。

五 恢复与验证

  • 恢复 SSH 配置与密钥:
    • 配置文件:sudo cp /backup/…/sshd_config /etc/ssh/sshd_config(恢复前先备份当前配置)
    • 主机密钥:sudo cp /backup/…/ssh_host_*.key /etc/ssh/(确保权限为 600,属主 root:root
    • 认证文件:sudo cp /backup/…/passwd.bak /etc/passwd;sudo cp /backup/…/shadow.bak /etc/shadow;sudo cp /backup/…/sshd.bak /etc/pam.d/sshd
  • 重启服务并验证:
    • 检查与重启:sudo systemctl restart ssh 或 sudo systemctl status ssh
    • 语法检查:sudo sshd -t
    • 连接验证:ssh user@localhost 或 sftp user@localhost
  • 数据恢复:
    • 目录/文件:tar xzf backup.tar.gz -C /restore/dir
    • 远端回传:按第三部分命令反向执行
  • 建议先在测试环境演练恢复流程,确认无误再用于生产。

0