温馨提示×

Debian SFTP配置备份怎么做

小樊
38
2025-11-18 07:17:57
栏目: 智能运维

Debian SFTP配置备份实操指南

一 备份范围与关键文件

  • 建议一次性纳入以下关键项,覆盖配置、认证、主机密钥、日志与用户数据,确保可恢复性与可审计性:
    • SSH服务配置:/etc/ssh/sshd_config(SFTP通过SSH提供,核心配置所在)。
    • 认证与账户:/etc/passwd、/etc/shadow、/etc/group(账户与组信息;备份与恢复时注意权限与一致性)。
    • PAM与SSH子系统:/etc/pam.d/sshd(可能影响SFTP登录认证)、/usr/lib/openssh/sftp-server(外部SFTP子系统路径,如使用)。
    • 主机密钥:/etc/ssh/ssh_host_*(如:rsa、ecdsa、ed25519),用于服务器身份标识,丢失会导致客户端信任告警。
    • 日志:/var/log/auth.log、/var/log/syslog(排查登录与SFTP问题的重要审计日志)。
    • 用户环境与密钥:/home/<用户名>/.ssh/authorized_keys(用户公钥授权),以及需要纳入的SFTP用户数据目录(如:/home/sftpuser)。

二 手动备份步骤

  • 快速复制关键文件与目录(示例命令,按需增减):
    • 配置文件与PAM:
      • sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
      • sudo cp /etc/pam.d/sshd /etc/pam.d/sshd.bak
    • 账户与组:
      • sudo cp /etc/passwd /etc/passwd.bak
      • sudo cp /etc/shadow /etc/shadow.bak
      • sudo cp /etc/group /etc/group.bak
    • 主机密钥(全量覆盖备份):
      • sudo cp -a /etc/ssh/ssh_host_* /backup/ssh_host_keys/
    • 日志(只读拷贝,避免影响正在写入的日志):
      • sudo cp /var/log/auth.log /backup/logs/auth.log.bak-$(date +%F)
      • sudo cp /var/log/syslog /backup/logs/syslog.bak-$(date +%F)
    • 用户环境与数据:
      • sudo cp -a /home/sftpuser /backup/home/sftpuser-$(date +%F)
      • sudo cp -a /home/<用户名>/.ssh /backup/home/<用户名>/.ssh-$(date +%F)
  • 打包归档(便于传输与长期保存):
    • sudo tar czvf sftp_backup_$(date +%F).tar.gz
      /etc/ssh/sshd_config.bak /etc/pam.d/sshd.bak
      /etc/passwd.bak /etc/shadow.bak /etc/group.bak
      /backup/ssh_host_keys/
      /backup/logs/auth.log.bak-$(date +%F) /backup/logs/syslog.bak-$(date +%F)
      /backup/home/sftpuser-$(date +%F) /backup/home/<用户名>/.ssh-$(date +%F)
  • 说明:如无外部子系统需求,可不备份**/usr/lib/openssh/sftp-server**;如使用internal-sftp,则无需该文件。

三 自动化与远程备份

  • 使用rsync做增量备份(保留权限与属性,适合定期同步):
    • 备份配置与密钥目录:
      • sudo rsync -a --delete /etc/ssh/ /backup/sftp/etc_ssh/
      • sudo rsync -a --delete /etc/pam.d/sshd /backup/sftp/pam.d.sshd
    • 备份日志(追加日期后缀,避免覆盖):
      • sudo rsync -a /var/log/auth.log /backup/sftp/logs/auth.log-$(date +%F)
  • 使用tar进行周期压缩归档(可配合cron):
    • 0 2 * * * /usr/bin/tar czvf /backup/sftp/sftp_backup_$(date +%F).tar.gz
      /etc/ssh/sshd_config /etc/pam.d/sshd /etc/passwd /etc/shadow /etc/group
      /etc/ssh/ssh_host_* /var/log/auth.log* /var/log/syslog*
      /home/sftpuser /home/*/.ssh 2>&1 | logger -t sftp_backup
  • 远程离站备份(将归档传至远程主机或备份服务器):
    • scp /backup/sftp/sftp_backup_$(date +%F).tar.gz user@backup.example.com:/backup/
  • 权限与安全:备份目录建议设置为700且仅管理员可写;远程传输使用密钥认证;归档内避免包含明文敏感文件(如未加密的私钥)。

四 验证与恢复

  • 备份完整性验证:
    • 配置与账户文件对比:
      • sudo diff /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
      • sudo diff /etc/passwd /etc/passwd.bak
      • sudo diff /etc/shadow /etc/shadow.bak
      • sudo diff /etc/group /etc/group.bak
    • 归档与列表校验:
      • tar tzf sftp_backup_$(date +%F).tar.gz
  • 恢复步骤(示例):
    • 配置与PAM:
      • sudo cp /backup/sftp/etc_ssh/sshd_config /etc/ssh/sshd_config
      • sudo cp /backup/sftp/pam.d.sshd /etc/pam.d/sshd
    • 主机密钥(先停服务,恢复后重启):
      • sudo systemctl stop ssh
      • sudo cp -a /backup/ssh_host_keys/ssh_host_* /etc/ssh/
      • sudo systemctl start ssh
    • 账户与组(谨慎:仅在必要时恢复,避免覆盖现有账户):
      • sudo cp /backup/sftp/etc/passwd.bak /etc/passwd
      • sudo cp /backup/sftp/etc/shadow.bak /etc/shadow
      • sudo cp /backup/sftp/etc/group.bak /etc/group
    • 用户数据与授权:
      • sudo cp -a /backup/home/sftpuser-<日期> /home/sftpuser
      • sudo cp -a /backup/home/<用户名>/.ssh-<日期> /home/<用户名>/.ssh
    • 权限修正(关键):
      • 对Chroot环境:确保ChrootDirectory上级目录属root:root且权限755,用户家目录属user:user且权限700;否则SFTP可能无法登录。
  • 服务重启与验证:
    • sudo systemctl restart ssh
    • 从客户端测试:sftp <用户名>@<服务器IP>,确认登录与读写正常。

0