在CentOS系统上搭建SFTP服务器通常涉及安装OpenSSH服务器,并对其进行相应的配置。以下是详细的搭建步骤:
安装OpenSSH服务器
确保你的CentOS系统已经安装了OpenSSH服务器。如果没有安装,可以使用以下命令进行安装:
sudo yum install openssh-server
启动并启用SSH服务
安装完成后,启动SSH服务,并设置其开机自启:
sudo systemctl start sshd
sudo systemctl enable sshd
检查SSH服务状态
确保SSH服务正在运行,并且没有错误:
sudo systemctl status sshd
创建SFTP用户
假设我们要创建一个名为 sftpuser 的用户,限制他只能访问 /sftp 目录,并且使用特定的SSH配置文件。
- 创建SFTP用户:
sudo useradd -m -s /sbin/nologin sftpuser
- 设置用户密码:
sudo passwd sftpuser
- 创建用户的SFTP根目录:
sudo mkdir /sftp
- 设置根目录的权限(根目录必须是root用户):
sudo chown root:root /sftp
sudo chmod 755 /sftp
- 在根目录下创建子目录,并设置写入权限:
sudo mkdir /sftp/sharedata
sudo chown sftpuser:sftpuser /sftp/sharedata
- 创建新用户的SSH配置文件目录:
sudo mkdir /home/sftpuser/.ssh
- 复制系统SSH配置文件到用户目录:
sudo cp /etc/ssh/sshd_config /home/sftpuser/.ssh/sshd_config
- 编辑用户的SSH配置文件:
sudo vi /home/sftpuser/.ssh/sshd_config
在配置文件中,添加以下配置:
Match User sftpuser
ChrootDirectory /sftp
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
注意将这个配置节放到最后,否则会出现“Directive ‘UseDNS’ is not allowed within a Match block”的错误。
- 给新用户的用户目录递归设置归属:
sudo chown -R sftpuser:sftpuser /home/sftpuser
- 给配置文件设置读取权限:
sudo chmod 755 /home/sftpuser/.ssh/sshd_config
- 修改SSH服务启动选项(可选):
如果你需要为多个用户指定不同的配置,可以在SSH服务的启动选项中指定这些文件。
sudo systemctl daemon-reload
sudo systemctl restart sshd
至此,你已经成功在CentOS上搭建了一个SFTP服务器,并且创建了一个受限访问的SFTP用户。你可以使用任何支持SFTP的客户端(如WinSCP、FileZilla等)连接到服务器,并使用SSH协议(端口22)进行连接,确保使用具有适当权限的用户凭据进行身份验证。
配置防火墙
如果系统的防火墙开启了FTP端口(默认为21),需要添加规则允许FTP流量通过防火墙。
使用以下命令添加FTP的防火墙规则:
sudo firewall-cmd --zone=public --permanent --add-port=21/tcp
sudo firewall-cmd --reload
额外的安全设置
为了提高服务器的安全性,可以考虑以下额外的安全设置:
-
禁用root登录:
编辑
/etc/ssh/sshd_config文件,找到以下行并注释掉或修改为:PermitRootLogin no -
更改SSH端口:
将SSH端口改为10000以上,以减少被自动扫描到的几率。
sudo vi /etc/ssh/sshd_config将以下行:
Port 22改为:
Port 10001 -
限制用户访问权限:
使用
chroot将用户限制在其主目录中,防止用户访问其他系统目录。sudo chroot_local_user=YES -
关闭不必要的服务:
关闭不必要的服务以减少攻击面。
sudo systemctl stop sshd sudo systemctl disable sshd
通过以上步骤,你可以在CentOS系统上成功搭建一个安全的SFTP服务器。确保在进行任何配置更改后,都重新加载或重启相应的服务以使更改生效。