Debian SFTP如何配置实现安全传输
小樊
37
2025-12-06 02:11:25
Debian SFTP安全传输配置指南
一 基础安全配置
- 更新系统并安装 OpenSSH 服务器:sudo apt update && sudo apt install openssh-server -y。
- 编辑 /etc/ssh/sshd_config:
- 禁用 root 登录:PermitRootLogin no。
- 启用公钥认证:PubkeyAuthentication yes;确保 AuthorizedKeysFile .ssh/authorized_keys。
- 按需设置密码认证:PasswordAuthentication yes/no(对外网建议禁用)。
- 可选限制登录来源:AllowUsers your_username@your_ip_address。
- 保持或启用 SFTP 子系统:Subsystem sftp /usr/lib/openssh/sftp-server。
- 连接保活:ClientAliveInterval 300、ClientAliveCountMax 3。
- 重启服务:sudo systemctl restart sshd。
- 防火墙放行 SSH(默认端口 22):sudo ufw allow OpenSSH && sudo ufw enable。
- 日志监控:实时查看认证日志 sudo tail -f /var/log/auth.log。
二 基于密钥的身份认证与自动登录
- 客户端生成密钥对:ssh-keygen -t rsa -b 4096(私钥 ~/.ssh/id_rsa,公钥 ~/.ssh/id_rsa.pub)。
- 将公钥复制到服务器:ssh-copy-id user@server_ip。
- 服务器端确保启用公钥:PubkeyAuthentication yes,AuthorizedKeysFile .ssh/authorized_keys。
- 加固私钥权限:chmod 600 ~/.ssh/id_rsa;chmod 700 ~/.ssh;chmod 644 ~/.ssh/id_rsa.pub。
- 客户端便捷连接:在 ~/.ssh/config 添加
Host server_ip
User username
IdentityFile ~/.ssh/id_rsa
- 完成后可直接使用:sftp username@server_ip(无需口令,自动使用密钥)。
三 限制用户与目录的 Chroot Jail
- 创建 SFTP 用户组:sudo groupadd sftpusers。
- 创建受限用户(禁止 shell 登录):sudo adduser --shell /bin/false --gecos “SFTP User” sftpuser;sudo usermod -aG sftpusers sftpuser。
- 设置 Chroot 根目录与可写目录:
- 根目录属主必须为 root:root 且权限 755:
sudo mkdir -p /home/sftpuser
sudo chown root:root /home/sftpuser
sudo chmod 755 /home/sftpuser
- 可写目录(如上传):
sudo mkdir /home/sftpuser/upload
sudo chown sftpuser:sftpusers /home/sftpuser/upload
sudo chmod 755 /home/sftpuser/upload
- 在 /etc/ssh/sshd_config 增加 Match 段:
Match Group sftpusers
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
- 重启服务:sudo systemctl restart sshd。
- 说明:Chroot 要求被限制目录及其上级目录的所有者均为 root,否则会话会失败。
四 连接测试与运维要点
- 连接测试:
- 口令登录:sftp username@server_ip
- 密钥登录:确保已配置密钥后直接 sftp,或在客户端指定私钥。
- 日志审计:持续关注 /var/log/auth.log 中的 Accepted/Failed 记录。
- 安全加固清单:
- 对外网建议禁用密码登录(PasswordAuthentication no),仅保留密钥。
- 保持系统与软件包更新:sudo apt update && sudo apt upgrade -y。
- 可选启用 AppArmor/SELinux 等强制访问控制以进一步约束进程权限。