下面以 CentOS 7 / 8 / Stream 为例,说明如何配置 SFTP(基于 OpenSSH),包含基础可用配置和安全的用户隔离配置(推荐)。
CentOS 一般默认已安装:
yum install -y openssh-server
systemctl enable sshd
systemctl start sshd
编辑配置文件:
vi /etc/ssh/sshd_config
确认有以下内容(默认一般都有):
Subsystem sftp internal-sftp
useradd sftpuser
passwd sftpuser
sftp sftpuser@服务器IP
✅ 到此,最基础的 SFTP 已可用
⚠️ 注意:Chroot 目录必须由 root 拥有,且其他用户不可写
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
vi /etc/ssh/sshd_config
在文件末尾添加:
Match User sftpuser
ChrootDirectory /data/sftp/sftpuser
ForceCommand internal-sftp
X11Forwarding no
AllowTcpForwarding no
systemctl restart sshd
sftp sftpuser@服务器IP
/upload 上传下载groupadd sftp
useradd -g sftp -s /sbin/nologin user1
passwd user1
mkdir -p /data/sftp/user1
chown root:root /data/sftp/user1
chmod 755 /data/sftp/user1
mkdir /data/sftp/user1/upload
chown user1:sftp /data/sftp/user1/upload
Match Group sftp
ChrootDirectory /data/sftp/%u
ForceCommand internal-sftp
X11Forwarding no
AllowTcpForwarding no
重启:
systemctl restart sshd
fatal: bad ownership or modes for chroot
✅ 解决:
root:root755/sbin/nologinfirewall-cmd --add-service=ssh --permanent
firewall-cmd --reload
如果你需要:
可以直接告诉我你的使用场景。