在 CentOS 上,SFTP 本身就已经是加密传输的,因为它基于 SSH(SSH File Transfer Protocol),所有数据(包括用户名、密码、文件内容)都是通过 SSH 加密通道传输的,不需要额外配置“加密”。
不过你可能是想了解 “如何确保 SFTP 一定是加密的” 或 “如何增强 SFTP 安全性”,下面从几个层面说明。
SFTP ≠ FTP
只要你能通过以下方式连接,就是加密的:
sftp user@centos_ip
或
sftp -P 22 user@centos_ip
SFTP 依赖 sshd,配置文件在:
/etc/ssh/sshd_config
Subsystem sftp internal-sftp
Ciphers aes256-ctr,aes192-ctr,aes128-ctr
MACs hmac-sha2-256,hmac-sha2-512
KexAlgorithms diffie-hellman-group-exchange-sha256
修改后重启:
systemctl restart sshd
如果你担心“不是加密传输”,请确保没有开启 vsftpd 的明文 FTP:
systemctl status vsftpd
如果不需要 FTP:
systemctl stop vsftpd
systemctl disable vsftpd
ssh-keygen
ssh-copy-id user@centos_ip
PasswordAuthentication no
重启 sshd:
systemctl restart sshd
Match User sftpuser
ChrootDirectory /data/sftp
ForceCommand internal-sftp
X11Forwarding no
AllowTcpForwarding no
tcpdump -i eth0 port 22
你会看到数据是加密的二进制,而非明文。
sftp -v user@ip
会显示:
debug1: Encryption: aes256-ctr
✅ SFTP 默认就是加密传输
✅ 不需要额外“加密”配置
✅ 合理做法是:
如果你是指 “文件本身加密后再传”(如 gpg / openssl),也可以告诉我,我可以给你示例。