在 CentOS 上配置 SFTP(基于 SSH 的文件传输)通常有以下几种常见方式。下面从最常用、最安全的方式讲起。
CentOS 默认已安装 openssh-server,SFTP 可直接使用。
useradd sftpuser
passwd sftpuser
编辑 SSH 配置:
vi /etc/ssh/sshd_config
在文件末尾添加:
Match User sftpuser
ChrootDirectory /home/sftpuser
ForceCommand internal-sftp
X11Forwarding no
AllowTcpForwarding no
chown root:root /home/sftpuser
chmod 755 /home/sftpuser
mkdir /home/sftpuser/upload
chown sftpuser:sftpuser /home/sftpuser/upload
⚠️
ChrootDirectory必须由 root 拥有,且其他用户不可写
systemctl restart sshd
sftp sftpuser@服务器IP
groupadd sftp
useradd -g sftp -s /sbin/nologin sftp1
passwd sftp1
Match Group sftp
ChrootDirectory /data/sftp/%u
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
mkdir -p /data/sftp/sftp1/upload
chown root:sftp /data/sftp/sftp1
chmod 755 /data/sftp/sftp1
chown sftp1:sftp /data/sftp/sftp1/upload
ssh-keygen -t rsa
复制公钥:
ssh-copy-id sftpuser@服务器IP
禁用密码登录(可选):
PasswordAuthentication no
firewall-cmd --permanent --add-service=ssh
firewall-cmd --reload
setsebool -P ssh_chroot_rw_homedirs on
✅ SFTP 连不上
sshd 是否运行/var/log/secure✅ 写文件失败
✅ 能登录但不能列目录
ChrootDirectory 权限错误如果你需要:
告诉我你的使用场景即可。