在 CentOS 上添加 SFTP 用户,通常做法是创建系统用户 + 限制只能使用 SFTP(不能 SSH 登录)。下面一步步说明。
# 创建用户
useradd -m sftpuser
# 设置密码
passwd sftpuser
-m会自动创建家目录/home/sftpuser
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
⚠️ 注意:
SFTP 根目录(chroot 目录)必须 属主是 root,且其他用户不可写
编辑配置文件:
vi /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
X11Forwarding no
AllowTcpForwarding no
如果有多个用户:
Match Group sftp
ChrootDirectory /data/sftp/%u
ForceCommand internal-sftp
groupadd sftp
usermod -G sftp sftpuser
然后 sshd_config 用:
Match Group sftp
systemctl restart sshd
sftp sftpuser@服务器IP
只能访问:
/data/sftp/sftpuser
不能:
Permission denied (publickey,password)
检查:
root755mkdir -p /home/sftpuser/.ssh
cp id_rsa.pub /home/sftpuser/.ssh/authorized_keys
chown -R sftpuser:sftpuser /home/sftpuser/.ssh
chmod 700 /home/sftpuser/.ssh
chmod 600 /home/sftpuser/.ssh/authorized_keys
如果你需要:
告诉我,我可以给你定制方案。