温馨提示×

centos怎样安装sftp服务器

小樊
46
2026-09-11 21:31:08
栏目: 云计算

在 CentOS 上搭建 SFTP 服务器其实不需要额外安装特殊软件,因为 SFTP 是基于 SSH 的,只要系统装了 openssh-server 就可以使用。

下面我分 最简可用安全隔离(推荐) 两种方式说明。


一、最基础:确认 SFTP 可用(默认就有)

1. 安装/确认 SSH 服务

yum install -y openssh-server
systemctl enable sshd
systemctl start sshd

2. 创建用户

useradd sftpuser
passwd sftpuser

3. 测试 SFTP

从客户端:

sftp sftpuser@服务器IP

✅ 默认就能用(用户有 shell 权限)


二、推荐方式:仅 SFTP,禁止 SSH(安全)

1. 创建 SFTP 用户(无 shell)

useradd -m -s /sbin/nologin sftpuser
passwd sftpuser

2. 创建 SFTP 根目录

mkdir -p /sftp/sftpuser
chown root:root /sftp
chown root:root /sftp/sftpuser
chmod 755 /sftp/sftpuser

⚠️ SFTP 根目录 必须属主为 root

3. 创建可写目录

mkdir /sftp/sftpuser/upload
chown sftpuser:sftpuser /sftp/sftpuser/upload

4. 修改 SSH 配置

编辑:

vi /etc/ssh/sshd_config

注释掉或删除:

# Subsystem sftp /usr/libexec/openssh/sftp-server

在文件末尾添加:

Subsystem sftp internal-sftp

Match User sftpuser
    ChrootDirectory /sftp/sftpuser
    ForceCommand internal-sftp
    X11Forwarding no
    AllowTcpForwarding no

5. 重启 SSH

systemctl restart sshd

6. 测试

sftp sftpuser@服务器IP

✅ 只能 SFTP
❌ 不能 SSH 登录


三、常见问题

❓ 登录报错:broken pipe / permission denied

原因:

  • Chroot 目录不是 root 拥有
  • 目录权限不是 755

✅ 修复:

chown root:root /sftp/sftpuser
chmod 755 /sftp/sftpuser

❓ 多个 SFTP 用户?

Match Group sftp
    ChrootDirectory /sftp/%u
    ForceCommand internal-sftp
groupadd sftp
useradd -g sftp -s /sbin/nologin user1

四、防火墙(如有)

firewall-cmd --add-service=ssh --permanent
firewall-cmd --reload

如果你需要:

  • ✅ 多用户隔离
  • ✅ 只读/只写
  • ✅ 配合 vsftpd / FTP
  • ✅ 公网安全配置

可以告诉我你的使用场景,我可以直接给你 完整可用配置

0