CentOS中SFTP如何设置
一、安装OpenSSH服务器
CentOS系统通常默认安装OpenSSH服务器,若未安装,可通过以下命令安装:
sudo yum install openssh-server
安装完成后,启动SSH服务并设置为开机自启:
sudo systemctl start sshd
sudo systemctl enable sshd
二、创建专用SFTP用户组与用户
为隔离SFTP用户权限,建议创建专门的用户组(如sftpusers)及用户,并限制其登录方式为SFTP(禁止shell登录):
# 创建用户组
sudo groupadd sftpusers
# 创建用户(以"sftpuser"为例),指定所属组、禁止shell登录
sudo useradd -g sftpusers -s /sbin/nologin sftpuser
# 设置用户密码
sudo passwd sftpuser
输入密码并确认即可。
三、配置用户目录权限
SFTP用户的根目录(由ChrootDirectory指定)必须归属root,且权限为755(防止用户越权修改目录结构);用户需在根目录下创建可写入的子目录(如upload)用于文件上传:
# 创建用户根目录(以用户主目录为例)
sudo mkdir -p /home/sftpuser
# 设置根目录归属与权限
sudo chown root:root /home/sftpuser
sudo chmod 755 /home/sftpuser
# 创建可写入的子目录
sudo mkdir /home/sftpuser/upload
# 设置子目录归属与权限(用户需对该目录有读写权限)
sudo chown sftpuser:sftpusers /home/sftpuser/upload
sudo chmod 755 /home/sftpuser/upload
注:若将用户限制在其他目录(如/data/sftp/sftpuser),需同步调整上述路径。
四、修改SSH配置文件(关键步骤)
编辑/etc/ssh/sshd_config文件,通过Match规则针对SFTP用户组进行配置,替换默认的SFTP子系统为更安全的internal-sftp(无需额外进程,性能更好):
sudo vi /etc/ssh/sshd_config
在文件末尾添加以下内容(以sftpusers组为例):
# 启用SFTP子系统(可选,推荐使用internal-sftp替代)
Subsystem sftp internal-sftp
# 匹配sftpusers组,限制其访问
Match Group sftpusers
ChrootDirectory %h # 将用户限制在其主目录(%h代表用户主目录)
ForceCommand internal-sftp # 强制使用SFTP,禁用SSH shell
AllowTcpForwarding no # 禁止TCP转发(防止端口转发攻击)
X11Forwarding no # 禁止X11转发(避免不必要的图形界面转发)
说明:
ChrootDirectory %h:将用户限制在其主目录,无法访问系统其他路径;internal-sftp:比默认的sftp-server更轻量,无需单独进程,且支持chroot环境。
五、重启SSH服务应用配置
修改配置文件后,需重启SSH服务使更改生效:
sudo systemctl restart sshd。
六、测试SFTP连接
使用SFTP客户端(如命令行、FileZilla或WinSCP)连接服务器,验证配置是否成功:
# 命令行测试(替换为实际用户名和服务器IP)
sftp sftpuser@your_server_ip
输入密码后,若能成功登录并执行ls、put、get等命令,则说明配置生效。
七、安全增强措施(可选但推荐)
- 使用密钥认证:替代密码登录,提升安全性。生成密钥对后,将公钥添加到用户
~/.ssh/authorized_keys文件中,并在sshd_config中设置PasswordAuthentication no。 - 禁用root登录:在
sshd_config中设置PermitRootLogin no,防止root用户通过SFTP登录。 - 调整SELinux策略:若启用了SELinux,需允许SFTP访问用户目录。执行以下命令:
sudo semanage fcontext -a -t sftp_chroot_t "/data/sftp(/.*)?" # 替换为实际目录 sudo restorecon -Rv /data/sftp - 防火墙配置:确保防火墙允许SSH(默认端口22)流量:
sudo firewall-cmd --permanent --add-service=ssh sudo firewall-cmd --reload ```。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: CentOS中SFTP如何设置
本文地址: https://pptw.com/jishu/729510.html
