温馨提示×

CentOS怎样开启SFTP

小樊
44
2026-07-20 10:08:13
栏目: 智能运维

在 CentOS 上开启 SFTP 非常简单,默认情况下 OpenSSH 就已经支持 SFTP,只需要确保 SSH 服务正常运行即可。下面是完整步骤:


一、确认 OpenSSH 是否已安装

rpm -qa | grep openssh

如果没有安装,执行:

sudo yum install -y openssh-server

二、启动并设置 SSH 服务(SFTP 依赖 SSH)

1️⃣ 启动 SSH 服务

sudo systemctl start sshd

2️⃣ 设置开机自启

sudo systemctl enable sshd

3️⃣ 查看运行状态

sudo systemctl status sshd

三、确认 SFTP 是否启用(默认是开启的)

查看 SSH 配置文件:

sudo vi /etc/ssh/sshd_config

确认有类似以下内容(通常已存在):

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

✅ 只要这一行存在,SFTP 就已经开启。

修改后需重启 SSH:

sudo systemctl restart sshd

四、防火墙放行 SSH(22 端口)

CentOS 7 / 8

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

CentOS 6(iptables)

iptables -A INPUT -p tcp --dport 22 -j ACCEPT
service iptables save
service iptables restart

五、使用 SFTP 登录

1️⃣ Linux / macOS

sftp username@服务器IP

2️⃣ Windows

使用工具:

  • WinSCP
  • FileZilla
  • Xftp

协议选择 SFTP,端口 22


六、限制用户只能使用 SFTP(可选,安全推荐)

1️⃣ 创建 SFTP 专用用户

sudo useradd -m sftpuser
sudo passwd sftpuser

2️⃣ 修改 sshd_config

sudo vi /etc/ssh/sshd_config

在文件末尾添加:

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

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

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

4️⃣ 重启 SSH

sudo systemctl restart sshd

⚠️ ChrootDirectory 必须由 root 拥有,且不能被普通用户写


七、常见问题排查

  • 连不上:检查 22 端口、SELinux、云服务器安全组
  • 提示 broken pipe:Chroot 目录权限不正确
  • 仍然能 SSH 登录:ForceCommand 未配置

如果你是 CentOS 7 / 8 / Stream,或需要 只允许 SFTP、禁止 SSH、多用户配置,告诉我我可以给你定制方案 ✅

0