温馨提示×

centos怎么开启sftp功能

小樊
50
2026-09-21 06:26:41
栏目: 智能运维

CentOS 上开启 SFTP 功能,通常不需要额外安装软件,因为 SFTP 是基于 SSH 的,只要 SSH 服务正常,SFTP 一般就可以用。下面按常见场景说明。


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

1. 检查 SSH 是否安装

rpm -qa | grep openssh

一般会有:

  • openssh
  • openssh-server
  • openssh-clients

如果没有:

yum install -y openssh-server

2. 启动并设置开机自启

systemctl start sshd
systemctl enable sshd

3. 检查 SSH 状态

systemctl status sshd

二、默认 SFTP 是否已可用(最常见情况)

CentOS 默认 已开启 SFTP,无需额外配置。

测试:

sftp user@服务器IP

如果能连接,说明 SFTP 已开启。


三、如果 SFTP 被禁用,如何开启

编辑 SSH 配置文件:

vi /etc/ssh/sshd_config

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

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

如果被注释或修改了,恢复为上面这行。

修改后重启 SSH:

systemctl restart sshd

四、限制用户只能使用 SFTP(不能 SSH 登录)

适合做文件上传/下载用户。

1. 创建用户

useradd sftpuser
passwd sftpuser

2. 修改 sshd_config

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

五、防火墙和 SELinux(常见问题)

防火墙

SFTP 使用 SSH 端口(默认 22):

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

SELinux(如遇到权限问题)

setsebool -P ssh_chroot_rw_homedirs on

六、客户端连接方式

  • Linux / macOS:
sftp user@ip
  • Windows:
    • FileZilla
    • WinSCP
    • Xshell

如果你愿意,可以告诉我:

  • CentOS 版本(6 / 7 / 8 / Stream)
  • 是否要 只允许 SFTP,不允许 SSH
  • 是否用于 多用户隔离

我可以给你一份更精确的配置方案。

0