在 CentOS 上配置 SFTP(基于 SSH 的文件传输)通常有几种方式,最常见、最安全的是使用系统账户 + 限制到指定目录(Chroot)。下面我按最常用场景给你一个完整、可操作的配置教程。
openssh-server检查 SSH 服务:
systemctl status sshd
useradd -m -s /sbin/nologin sftpuser
passwd sftpuser
/sbin/nologin表示该用户不能 SSH 登录,只能 SFTP
mkdir -p /data/sftp/sftpuser
chown root:root /data/sftp/sftpuser
chmod 755 /data/sftp/sftpuser
mkdir /data/sftp/sftpuser/upload
chown sftpuser:sftpuser /data/sftp/sftpuser/upload
⚠️ 注意:
编辑:
vim /etc/ssh/sshd_config
# Subsystem sftp /usr/libexec/openssh/sftp-server
Subsystem sftp internal-sftp
Match User sftpuser
ChrootDirectory /data/sftp/sftpuser
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
如果是多个用户,可用:
Match Group sftp
systemctl restart sshd
sftp sftpuser@localhost
原因:Chroot 目录权限不对
解决:
chown root:root /data/sftp/sftpuser
chmod 755 /data/sftp/sftpuser
upload 目录写/sbin/nologinssh-keygen -t rsa
mkdir -p /home/sftpuser/.ssh
cat id_rsa.pub >> /home/sftpuser/.ssh/authorized_keys
chown -R sftpuser:sftpuser /home/sftpuser/.ssh
并在 sshd_config 中禁用密码:
PasswordAuthentication no
如果你需要:
告诉我你的使用场景,我可以给你更精准的配置方案。