HoRain云小助手个人主页 个人专栏: 《Linux 系列教程》《c语言教程》⛺️生活的理想就是为了理想的生活!⛳️ 推荐前些天发现了一个超棒的服务器购买网站性价比超高大内存超划算忍不住分享一下给大家。点击跳转到网站。专栏介绍专栏名称专栏介绍《C语言》本专栏主要撰写C干货内容和编程技巧让大家从底层了解C把更多的知识由抽象到简单通俗易懂。《网络协议》本专栏主要是注重从底层来给大家一步步剖析网络协议的奥秘一起解密网络协议在运行中协议的基本运行机制《docker容器精解篇》全面深入解析 docker 容器从基础到进阶涵盖原理、操作、实践案例助您精通 docker。《linux系列》本专栏主要撰写Linux干货内容从基础到进阶知识由抽象到简单通俗易懂帮你从新手小白到扫地僧。《python 系列》本专栏着重撰写Python相关的干货内容与编程技巧助力大家从底层去认识Python将更多复杂的知识由抽象转化为简单易懂的内容。《试题库》本专栏主要是发布一些考试和练习题库涵盖软考、HCIE、HRCE、CCNA等目录⛳️ 推荐专栏介绍 安装与检查OpenSSH 创建专用的SFTP用户和组 建立安全的目录结构⚙️ 配置SSH服务器关键步骤 重启服务与测试连接⚠️ 常见问题排查在CentOS 7上搭建一个安全的SFTP服务器核心是配置一个“监牢”环境将用户限制在指定目录内。下面这张流程图帮你快速了解整个操作的全貌。flowchart TD A[开始搭建SFTP服务器] -- B[安装与启动OpenSSH] B -- C[创建专用用户和组] C -- D[建立严格的目录结构] D -- E[配置SSH以启用chroot] E -- F[重启服务并测试] F -- G[SFTP服务就绪] C -- C1[创建用户组sftpusers] C -- C2[创建用户并禁止shell登录] D -- D1[设置根目录属主为root] D -- D2[创建用户可写的子目录] E -- E1[启用internal-sftp] E -- E2[匹配用户组并设置chroot] F -- F1[重启sshd服务] F -- F2[使用客户端连接测试]以下是每个步骤的详细操作说明。 安装与检查OpenSSHSFTP是OpenSSH的一个子系统因此首先需要确保OpenSSH服务器已安装并运行。安装OpenSSH服务器通常系统已预装sudo yum install -y openssh-server启动并设置开机自启sudo systemctl start sshd sudo systemctl enable sshd检查防火墙如果防火墙firewalld是开启状态需要放行SSH默认的22端口。sudo firewall-cmd --permanent --add-servicessh sudo firewall-cmd --reload如果使用的是云服务器如阿里云、腾讯云还需在云平台的安全组规则中放行TCP 22端口。 创建专用的SFTP用户和组为了管理方便和安全我们为SFTP用户创建一个独立的组和用户。创建用户组例如sftpuserssudo groupadd sftpusers创建SFTP用户例如用户名为mysftpuser并禁止其通过SSH获得Shell终端这是关键的安全措施sudo useradd -g sftpusers -s /sbin/nologin mysftpuser为用户设置密码sudo passwd mysftpuser 建立安全的目录结构这是实现“监牢”环境的物理基础目录权限设置至关重要。创建SFTP根目录选择一个目录作为所有SFTP用户的根目录例如/sftp。sudo mkdir /sftp设置根目录权限该目录的拥有者必须是root且其他用户不能有写权限否则SSH会出于安全考虑拒绝连接。sudo chown root:root /sftp sudo chmod 755 /sftp # 权限必须是755或更严格如750创建用户专属目录在根目录下为刚创建的用户建立一个目录此目录将是该用户登录后看到的唯一位置。sudo mkdir /sftp/mysftpuser设置用户子目录权限用户专属目录的权限同样需要严格设置。sudo chown root:root /sftp/mysftpuser # 属主仍为root sudo chmod 755 /sftp/mysftpuser创建用户可操作的子目录用户需要一个有写权限的目录来上传文件例如upload。sudo mkdir /sftp/mysftpuser/upload sudo chown mysftpuser:sftpusers /sftp/mysftpuser/upload # 此目录属主为用户 sudo chmod 755 /sftp/mysftpuser/upload # 可根据需要设置为766或770⚙️ 配置SSH服务器关键步骤通过修改SSH配置文件将用户锁定在指定的根目录内。编辑配置文件sudo vi /etc/ssh/sshd_config在文件末尾添加以下配置这些配置指示SSH为sftpusers组的用户启用内部SFTP服务并将其限制在指定的根目录。# 注释掉或确保以下行存在使用内置SFTP实现 Subsystem sftp internal-sftp # 匹配sftpusers组应用以下规则 Match Group sftpusers # 设置chroot根目录%u代表用户名这里用户将锁定在/sftp/mysftpuser ChrootDirectory /sftp/%u # 强制使用SFTP禁止Shell访问 ForceCommand internal-sftp # 禁用不相关的功能以增强安全 AllowTcpForwarding no X11Forwarding no在保存修改前务必检查配置语法防止配置错误导致SSH服务无法启动sudo sshd -t如果该命令没有输出任何错误信息说明配置文件语法正确。 重启服务与测试连接重启SSH服务以应用所有更改sudo systemctl restart sshd使用SFTP客户端连接测试使用如FileZilla、WinSCP等客户端。服务器地址填你的CentOS 7的IP端口22。用户名填mysftpuser密码是你设置的密码。连接成功后你应该只能看到upload目录并且无法切换到其上级目录。⚠️ 常见问题排查连接被立即关闭最常见的原因是Chroot目录如/sftp/mysftpuser的权限设置错误。请确保其属主是root并且权限不超过755。无法上传文件/创建目录用户只能在属于自己且有写权限的子目录如upload中进行写操作。请检查该子目录的属主和权限。SELinux阻止如果启用了SELinux可能需要调整策略sudo setsebool -P ssh_chroot_rw_homedirs on按照以上步骤操作你就能在CentOS 7上成功搭建一个安全的SFTP服务器了。如果你在配置过程中遇到具体问题例如错误信息可以告诉我我们再一起分析。❤️❤️❤️本人水平有限如有纰漏欢迎各位大佬评论批评指正如果觉得这篇文对你有帮助的话也请给个点赞、收藏下吧非常感谢! Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧