是的,CentOS上的SFTP默认就是加密传输的
这是一个很常见的问题,答案很明确:是的,CentOS上的SFTP(SSH File Transfer Protocol)天生就是加密传输的。它并非一个独立的协议,而是完全构建在SSH(Secure Shell)协议之上的文件传输方式。这意味着,从你连接服务器的那一刻起,所有的认证信息、命令以及文件数据,都经由SSH提供的强加密通道进行传输,有效防止了数据在传输过程中被窃听或中途篡改。

所以,配置CentOS的SFTP服务,本质上就是配置SSH服务。整个过程并不复杂,核心在于正确编辑SSH的配置文件。下面,我们就来一步步看看如何确保SFTP配置正确,并且充分发挥其加密传输的优势。
配置SFTP服务的关键步骤
所有的操作都围绕一个核心文件展开:/etc/ssh/sshd_config。请务必在修改前做好备份。
1. 打开SSH配置文件
使用你熟悉的文本编辑器,比如vi或nano,以管理员权限打开它:
sudo vi /etc/ssh/sshd_config
2. 确认SFTP子系统启用
在配置文件中,找到下面这一行,确保它存在且没有被注释掉(行首没有#号):
Subsystem sftp /usr/libexec/openssh/sftp-server
在较新版本的OpenSSH中,你可能会看到使用internal-sftp的配置,这同样是有效的,并且功能更集成。
3. (可选但推荐)限制用户仅使用SFTP
为了进一步提升安全性,一个常见的做法是限制特定用户只能进行SFTP文件传输,而禁止其获得完整的SSH Shell登录权限。这可以通过在配置文件末尾添加类似下面的配置块来实现:
Match Group sftpusers
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
这里简单解释一下:
Match Group sftpusers:表示下面的规则仅适用于属于sftpusers组的用户。ChrootDirectory %h:将用户限制在其自己的家目录(%h)中,无法访问系统其他部分。ForceCommand internal-sftp:强制用户连接时只能启动SFTP会话。AllowTcpForwarding no和X11Forwarding no:关闭端口转发和X11转发功能,进一步收紧权限。
4. 创建用户组并添加用户
如果还没有sftpusers组,需要先创建它,然后将目标用户加入这个组:
sudo groupadd sftpusers
sudo usermod -aG sftpusers username
记得把上面的username替换成实际需要限制的用户名。同时,需要确保该用户的家目录及其上级目录的权限设置正确,以满足Chroot的要求(通常要求根目录归属root且权限为755)。
5. 重启SSH服务使配置生效
修改保存后,必须重启SSH服务才能加载新的配置:
sudo systemctl restart sshd
重启后,建议使用sudo systemctl status sshd检查一下服务状态,确保重启成功。
6. 确保防火墙放行SSH连接
最后,别忘了防火墙。SFTP走的是SSH端口(默认22),需要确保防火墙允许该服务:
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --reload
配置完成之后
完成以上步骤后,你的CentOS服务器就已经提供了一个加密的SFTP服务了。用户可以使用任何支持SFTP协议的客户端进行连接,无论是命令行工具sftp,还是像FileZilla、WinSCP这类图形化软件,所有传输过程都将在SSH构建的加密隧道中安全进行。这样一来,文件传输的安全性问题,就可以彻底放心了。
