温馨提示×

怎么在CentOS开启SFTP

小樊
34
2026-07-08 17:54:26
栏目: 智能运维

CentOS 上开启 SFTP 通常不需要额外安装软件,因为 SFTP 由 OpenSSH 提供。下面按常见场景给你一个完整、实用的操作指南。


一、确认并安装 OpenSSH(若未安装)

1️⃣ 检查是否已安装

rpm -qa | grep openssh

2️⃣ 若未安装则安装

sudo yum install -y openssh-server

(CentOS 7 / 8 通用)


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

1️⃣ 启动 sshd

sudo systemctl start sshd

2️⃣ 设置开机自启

sudo systemctl enable sshd

3️⃣ 查看状态

sudo systemctl status sshd

✅ 看到 active (running) 即表示 SSH / SFTP 已就绪。


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

SFTP 默认由 sshd 提供,无需额外配置。

1️⃣ 检查配置文件

sudo vi /etc/ssh/sshd_config

确认存在以下内容(一般默认就有):

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

或(较新系统):

Subsystem sftp internal-sftp

✅ 有其中一条即可。


四、测试 SFTP 连接

从本机测试

sftp localhost

从客户端连接

sftp 用户名@服务器IP

示例:

sftp root@192.168.1.100

五、配置防火墙(非常重要)

1️⃣ 开放 22 端口

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

2️⃣ 确认

sudo firewall-cmd --list-all

六、常见需求:限制用户只能 SFTP,不能 SSH(推荐)

如果你希望 用户只能 SFTP,不能登录系统,可按下面配置。

1️⃣ 创建用户

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

创建可写目录:

sudo mkdir /home/sftpuser/upload
sudo chown sftpuser:sftpuser /home/sftpuser/upload

4️⃣ 重启 sshd

sudo systemctl restart sshd

✅ 该用户只能 SFTP,不能 SSH 登录。


七、常见问题排查

❌ 连接被拒绝

  • sshd 未启动
  • 防火墙未放行 22 端口

❌ 登录后提示 broken pipe

  • ChrootDirectory 权限不正确(必须是 root 拥有)

❌ 无法上传文件

  • 目录不是用户可写

八、总结(最简流程)

yum install -y openssh-server
systemctl start sshd
systemctl enable sshd
firewall-cmd --permanent --add-service=ssh
firewall-cmd --reload

✅ 到此,SFTP 已成功开启。


如果你告诉我:

  • ✅ CentOS 版本(7 / 8 / Stream)
  • ✅ 是否要 多用户隔离
  • ✅ 是否要 修改默认端口

我可以给你一份 完全定制版配置方案

0