在 CentOS 系统中配置 SFTP 加密方式,本质上是对 OpenSSH 服务器进行调优,让 SFTP 子系统运行在安全认证与加密传输的可靠轨道上。下面从实际操作出发,详细拆解关键步骤与注意事项,帮助你高效完成设置。

SFTP 加密方式的选择与配置指南
第一步:确认 OpenSSH 是否已安装,未安装则及时补上。
CentOS 系统默认会携带 OpenSSH,但建议先验证一下。执行以下命令查看:
yum list installed | grep openssh
如果输出为空,则需要安装它:
sudo yum install openssh-server
安装完成后,服务默认会启动,但先别急着用,后面还有几个重要调整需要完成。
第二步:正确配置 SFTP 子系统,确保参数无误。
编辑 /etc/ssh/sshd_config 配置文件。核心在于 SFTP 子系统这一行。默认配置可能如下:
# Subsystem sftp /usr/libexec/openssh/sftp-server
建议改为:
Subsystem sftp internal-sftp
internal-sftp 是 OpenSSH 内置的 SFTP 实现,相比外部子进程更加稳定且安全。修改后务必重启 sshd 服务使配置生效。
如果希望限制某些用户仅能使用 SFTP 而无法登录 Shell,可以在配置文件末尾添加一段条件匹配规则:
Match Group sftpusers
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
这段配置的含义是:属于 sftpusers 组的用户,登录后将被锁定到自己的家目录,只能执行 SFTP 命令,TCP 转发与 X11 转发全部禁用——这样即使密码泄露,攻击者也难以利用该账号进行其他操作,大幅提升安全性。
第三步:创建专用用户和用户组。
先建立用户组,再创建用户并将其加入该组:
sudo groupadd sftpusers
sudo useradd -G sftpusers sftpuser
sudo passwd sftpuser
注意,之前 ChrootDirectory 指向的是用户的家目录,因此该目录的权限必须严格遵循安全规范。
第四步:目录权限设置不可大意。
ChrootDirectory 所指定的目录(例如 /home/sftpuser)及其所有上级目录,所有者必须为 root,权限设置为 755。很多新手在这里栽跟头——权限配置错误会导致 SFTP 连接直接报错。正确操作如下:
sudo chown root:root /home/sftpuser
sudo chmod 755 /home/sftpuser
然后在该目录下创建一个子目录用于存放用户文件,比如 /home/sftpuser/files,这个子目录的所有权可以交给用户自身,以便进行上传下载操作。
第五步:密钥认证比密码登录可靠得多。
虽然 SFTP 本身通过 SSH 隧道加密传输,但认证方式同样影响整体安全等级。如果条件允许,建议立即使用 SSH 密钥对替代密码登录。具体流程是生成密钥对、将公钥添加到用户家目录下的 ~/.ssh/authorized_keys 文件中,然后在 sshd_config 中禁用密码登录。这一步能有效抵御大量暴力破解尝试。
第六步:别忘了定期更新软件包。
OpenSSH 和操作系统一样,安全漏洞会不时出现。养成良好的习惯,定期执行 sudo yum update openssh-server 或直接 sudo yum update,确保安全补丁及时到位。毕竟,如果文件传输通道本身存在漏洞,加密再强也无济于事。
完成以上步骤后,你的 CentOS 上的 SFTP 服务就具备了一套基础但可靠的安全方案:子系统采用内部实现、用户权限严格隔离、目录权限合规、认证方式优先使用密钥、服务保持最新。接下来就可以放心地用它进行文件传输了。
