温馨提示×

如何开启centos sftp

小樊
40
2026-10-26 12:40:00
栏目: 智能运维

在 CentOS 上开启 SFTP(基于 SSH 的文件传输)通常不需要额外安装服务,因为 SFTP 是 OpenSSH 自带的功能。下面按常见场景说明。


一、确认 SSH 已安装并运行(SFTP 依赖 SSH)

1. 检查是否安装 OpenSSH

rpm -qa | grep openssh

如果没有,安装:

yum install -y openssh-server

2. 启动并设置开机自启

systemctl start sshd
systemctl enable sshd

3. 确认端口(默认 22)

netstat -tunlp | grep sshd
# 或
ss -tunlp | grep sshd

二、默认即可使用 SFTP(最简单)

只要 sshd 正常运行,任何系统用户都可以使用 SFTP:

sftp username@服务器IP

✅ 不需要额外配置


三、限制用户只能使用 SFTP(不能登录 Shell)

常用于给业务/客户账号用。

1. 创建用户

useradd sftpuser
passwd sftpuser

2. 修改 SSH 配置

编辑:

vi /etc/ssh/sshd_config

在文件末尾添加:

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

3. 设置目录权限(非常重要)

chown root:root /home/sftpuser
chmod 755 /home/sftpuser
mkdir /home/sftpuser/upload
chown sftpuser:sftpuser /home/sftpuser/upload

4. 重启 SSH

systemctl restart sshd

四、防火墙放行(如果开了 firewalld)

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

五、SELinux 注意(CentOS 默认开启)

如果 SFTP 无法访问目录,可临时测试:

setenforce 0

长期解决(推荐):

setsebool -P ssh_chroot_rw_homedirs on

六、常见问题

  • 连不上:检查 22 端口、防火墙、SELinux
  • 权限拒绝:Chroot 目录必须属主是 root
  • 能登不能传:上传目录权限不对

如果你需要:

  • 多用户 SFTP
  • 不同用户不同目录
  • 使用非 22 端口
  • vsftpd(FTP 而非 SFTP)

可以告诉我你的具体需求,我给你对应方案。

0 踩