CentOS上搭建SFTP服务详解
SFTP(Secure File Transfer Protocol)是一种基于SSH协议的安全文件传输方式,在CentOS操作系统中,通过OpenSSH实现SFTP功能是一个常见且安全的选择,本文将详细介绍如何在CentOS上安装、配置和使用SFTP服务。

安装OpenSSH服务器
确保你的系统已经安装了OpenSSH服务器,如果没有安装,可以使用以下命令进行安装:
sudo yum install opensshserver
启动并设置SSH服务随系统启动自动启动:
sudo systemctl start sshd sudo systemctl enable sshd
检查SSH服务状态,确保其正常运行:
sudo systemctl status sshd
创建SFTP用户和目录
为了限制用户只能使用SFTP进行文件传输,我们需要创建一个专门的SFTP用户,并将其登录shell设置为/sbin/nologin,禁止其通过SSH登录到服务器。
1、创建一个名为sftpuser的用户:
sudo useradd m s /sbin/nologin sftpuser2、为该用户设置密码:

sudo passwd sftpuser3、创建一个用于SFTP的根目录:
sudo mkdir /sftp
sudo chown root:root /sftp
sudo chmod 755 /sftp4、在根目录下创建子目录,并设置权限:
sudo mkdir /sftp/sharedata
sudo chown sftpuser:sftpuser /sftp/sharedata配置SSH服务
我们需要修改SSH配置文件以启用SFTP功能。
1、复制系统SSH配置文件到用户目录:
sudo cp /etc/ssh/sshd_config /home/sftpuser/.ssh/sshd_config2、编辑用户的SSH配置文件:
sudo vi /home/sftpuser/.ssh/sshd_config在文件中添加以下内容,确保这些配置节放在最后,避免与前面的配置冲突:

Match User sftpuser
ChrootDirectory /sftp
ForceCommand internalsftp
AllowTcpForwarding no
X11Forwarding no3、修改SSH服务的启动选项:
打开SSH服务的启动选项文件,通常位于/etc/systemd/system/sshd.service或/usr/lib/systemd/system/sshd.service,找到并修改ExecStart行:
ExecStart=/usr/sbin/sshd f /home/sftpuser/.ssh/sshd_config D $OPTIONS4、重新加载并重启SSH服务:
sudo systemctl daemonreload
sudo systemctl restart sshd多SFTP用户配置
如果需要为多个用户指定不同的配置,可以为每个用户创建单独的配置文件,并在SSH服务的启动选项中指定这些文件。
为两个用户sftpuser1和sftpuser2创建不同的配置文件:
1、复制配置文件:
sudo cp /etc/ssh/sshd_config /home/sftpuser1/.ssh/sshd_config
sudo cp /etc/ssh/sshd_config /home/sftpuser2/.ssh/sshd_config2、编辑每个用户的配置文件:
sudo vi /home/sftpuser1/.ssh/sshd_config
sudo vi /home/sftpuser2/.ssh/sshd_config根据需要添加相应的配置,
Match User sftpuser1
ChrootDirectory /sftp/directory1
ForceCommand internalsftp
AllowTcpForwarding no
X11Forwarding no3、修改SSH服务的启动选项:
ExecStart=/usr/sbin/sshd f /home/sftpuser1/.ssh/sshd_config f /home/sftpuser2/.ssh/sshd_config D $OPTIONS4、重新加载并重启SSH服务:
sudo systemctl daemonreload
sudo systemctl restart sshd通过上述步骤,每个用户将使用自己的配置文件,可以分别定制他们的SSH行为。
测试SFTP连接
完成上述配置后,可以使用任何支持SFTP的客户端(如WinSCP、FileZilla等)连接到服务器,确保使用SSH协议(端口22)进行连接,并使用具有适当权限的用户凭据进行身份验证。
常见问题与解答(FAQs)
Q1: SFTP连接失败怎么办?
A1: 如果SFTP连接失败,首先检查以下几点:
确保SSH服务正在运行,并且监听正确的端口(默认是22)。
确保防火墙允许流量通过端口22。
检查用户是否被正确添加到系统中,并且密码正确。
查看系统日志(如/var/log/auth.log或/var/log/secure)以获取有关错误的详细信息。
Q2: 如何更改SFTP用户的根目录权限?
A2: 要更改SFTP用户的根目录权限,可以按照以下步骤操作:
使用chown命令更改目录的所有者,将/sftp/sharedata的所有者更改为sftpuser:
sudo chown sftpuser:sftpuser /sftp/sharedata使用chmod命令更改目录的权限,将/sftp/sharedata的权限设置为755:
sudo chmod 755 /sftp/sharedata确保目录的上级目录也是由root拥有,并且权限设置为755或更低。
