在日常运维工作中,想要在 CentOS 系统上配置 SFTP 以实现安全的数据加密传输,其实步骤并不复杂。尽管网络上存在大量教程,但它们往往要么过于冗长,要么遗漏了关键配置细节。本文将其整理为一份简洁实用的操作指南,按步骤执行即可快速完成部署。

1. 安装 OpenSSH 服务器
首先,需要确认系统是否已安装 OpenSSH 服务器。若未安装,请执行以下命令进行安装:
sudo yum install openssh-server2. 配置 SSH 服务器
接下来,打开 SSH 配置文件 /etc/ssh/sshd_config,定位并调整几个关键参数。核心目的是启用 SFTP 子系统并进行必要的安全强化:
# 启用 SFTP 子系统以支持文件传输Subsystem sftp /usr/libexec/openssh/sftp-server# 禁止 root 直接登录以提升安全性PermitRootLogin no# 允许公钥认证方式PubkeyAuthentication yes# 允许密码认证(可选)PasswordAuthentication yes# 其他安全相关配置UsePAM yes这些参数虽多,但核心要点只有三个:开启 SFTP 功能、禁止 root 直接登录、启用密钥认证。密码认证可作为备用方案保留,但在生产环境中建议禁用以降低风险。
3. 重启 SSH 服务
完成配置后,需要重启 SSH 服务才能使修改生效:
sudo systemctl restart sshd若系统提示找不到服务名,可能是路径存在差异,请检查 /etc/ssh/sshd_config 中 SFTP 子系统的路径是否与系统中的实际位置一致。
4. 生成 SSH 密钥对
接下来在客户端操作。在客户端的终端中生成密钥对,建议使用 4096 位长度以获得更高的安全性:
ssh-keygen -t rsa -b 4096按回车确认默认设置后,将在 ~/.ssh 目录下生成两个文件:私钥 id_rsa 和公钥 id_rsa.pub。请注意妥善保管私钥,切勿泄露,公钥则需要发送至服务器。
5. 将公钥复制到服务器
将公钥添加到服务器的授权列表中,最简便的方法是使用 ssh-copy-id 命令:
ssh-copy-id user@server_ip该命令会自动将公钥追加到服务器上对应用户的 ~/.ssh/authorized_keys 文件中。若遇到权限错误,请检查服务器上 .ssh 目录权限是否为 700,authorized_keys 文件权限是否为 600。
6. 使用 SFTP 进行加密传输
所有准备就绪,现在可以测试连接。在客户端输入以下命令连接到服务器:
sftp user@server_ip若已配置密钥认证,则可直接连接;否则需要输入密码。连接成功后,将显示 sftp> 提示符。在此界面中,使用 get 命令下载文件,put 命令上传文件,操作方式与 FTP 类似,但所有数据传输均经过加密处理,即使被截获也无法解析。
7. 额外的安全措施
基本功能已配置完成,但安全防护需要持续关注。除了上述基础配置,建议一并实施以下安全措施:
- 防火墙限制:默认 SSH 端口为 22,建议仅允许此端口通信,关闭其他非必要端口。可使用 firewalld 或 iptables 实现。
- 用户权限隔离:为 SFTP 用户创建独立用户组,并限制其家目录访问权限。这样即使账号泄露,攻击者也只能在受限目录中活动。
- 密码强度:若启用了密码认证,请避免使用弱密码,例如 "123456"。建议使用至少 16 位、包含大小写字母、数字和特殊字符的组合,并定期更换。
- 日志监控:SSH 登录日志位于
/var/log/secure(CentOS 7/8)或/var/log/auth.log。定期检查日志,留意异常登录尝试,尤其是来自同一 IP 的频繁失败尝试。
完成以上七个步骤后,CentOS 上的 SFTP 服务即可稳定运行,实现安全的数据加密传输。简而言之,只要 SSH 连接本身是安全的,您传输的文件数据就能得到有效保护。
