温馨提示×

centos sftp 如何加密传输

小樊
38
2026-09-02 22:50:20
栏目: 网络安全

在 CentOS 上,SFTP 本身就已经是加密传输的,因为它基于 SSH(SSH File Transfer Protocol),所有数据(包括用户名、密码、文件内容)都是通过 SSH 加密通道传输的,不需要额外配置“加密”。

不过你可能是想了解 “如何确保 SFTP 一定是加密的”“如何增强 SFTP 安全性”,下面从几个层面说明。


一、确认 SFTP 是加密的(默认就是)

SFTP ≠ FTP

  • FTP:明文传输(不推荐)
  • SFTP:基于 SSH,默认加密 ✅

只要你能通过以下方式连接,就是加密的:

sftp user@centos_ip

sftp -P 22 user@centos_ip

二、CentOS 上 SFTP 服务端配置(SSH)

SFTP 依赖 sshd,配置文件在:

/etc/ssh/sshd_config

1. 确保 SFTP 子系统启用

Subsystem sftp internal-sftp

2. 强制使用加密算法(可选增强)

Ciphers aes256-ctr,aes192-ctr,aes128-ctr
MACs hmac-sha2-256,hmac-sha2-512
KexAlgorithms diffie-hellman-group-exchange-sha256

修改后重启:

systemctl restart sshd

三、禁用明文 FTP(重要)

如果你担心“不是加密传输”,请确保没有开启 vsftpd 的明文 FTP

systemctl status vsftpd

如果不需要 FTP:

systemctl stop vsftpd
systemctl disable vsftpd

四、使用密钥登录(比密码更安全)

1. 客户端生成密钥

ssh-keygen

2. 上传公钥

ssh-copy-id user@centos_ip

3. 禁止密码登录(可选)

PasswordAuthentication no

重启 sshd:

systemctl restart sshd

五、限制用户只能使用 SFTP(不能登录 shell)

Match User sftpuser
    ChrootDirectory /data/sftp
    ForceCommand internal-sftp
    X11Forwarding no
    AllowTcpForwarding no

六、验证是否加密

方法 1:抓包验证(理论验证)

tcpdump -i eth0 port 22

你会看到数据是加密的二进制,而非明文。

方法 2:连接时查看算法

sftp -v user@ip

会显示:

debug1: Encryption: aes256-ctr

总结

SFTP 默认就是加密传输
✅ 不需要额外“加密”配置
✅ 合理做法是:

  • 使用 SSH(22 端口)
  • 禁用 FTP
  • 使用密钥登录
  • 限制用户权限

如果你是指 “文件本身加密后再传”(如 gpg / openssl),也可以告诉我,我可以给你示例。

0