SFTP(SSH File Transfer Protocol)是基于SSH的安全文件传输协议,配置SFTP的核心是通过OpenSSH服务器实现,以下是快速配置流程:
确保系统已安装OpenSSH服务器(默认可能已安装),若未安装,执行以下命令:
sudo yum install openssh-server -y
安装完成后,启动SSH服务并设置为开机自启,保证服务持续运行:
sudo systemctl start sshd
sudo systemctl enable sshd
编辑SSH主配置文件/etc/ssh/sshd_config,修改以下关键参数:
Subsystem sftp internal-sftp
Match Group sftpusers
ChrootDirectory %h # 将用户根目录限制为其主目录
ForceCommand internal-sftp # 强制使用SFTP,禁用SSH shell
AllowTcpForwarding no # 禁止TCP转发
X11Forwarding no # 禁止X11转发
注:
Match Group sftpusers表示仅sftpusers组的用户受此规则限制。
sudo groupadd sftpusers
ftpuser为例):sudo useradd -m -G sftpusers ftpuser # `-m`创建家目录,`-G`加入sftpusers组
sudo passwd ftpuser # 设置用户密码
sudo usermod -s /sbin/nologin ftpuser
SFTP用户的根目录需设为不可写(防止用户修改自身根目录结构),子目录设为可写(用于存放文件):
%h代表用户家目录,如/home/ftpuser):sudo chown root:root /home/ftpuser
sudo chmod 755 /home/ftpuser
upload目录,用于文件上传):sudo mkdir -p /home/ftpuser/upload
sudo chown ftpuser:sftpusers /home/ftpuser/upload # 子目录所有者为用户,组为sftpusers
sudo chmod 755 /home/ftpuser/upload
修改配置文件后,重启SSH服务使更改生效:
sudo systemctl restart sshd
使用SFTP客户端(如命令行、WinSCP、FileZilla)连接服务器,验证配置是否成功:
sftp ftpuser@your_server_ip
输入密码后,若能进入SFTP命令行界面(显示sftp>),则表示配置成功。可通过ls、put、get等命令测试文件操作。
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --reload
sudo setsebool -P ssh_chroot_rw_homedirs on
通过以上步骤,即可在CentOS上快速搭建一个安全的SFTP服务器,满足基本的文件传输需求。