SFTP本身通过SSH协议提供加密,但可根据需求采用额外加密层(如GnuPG)或增强SSH配置来提升安全性。以下是具体方法:
SFTP基于SSH协议,传输时数据默认通过SSH加密(如AES、ChaCha20等算法)。只需正确配置SSH服务即可启用:
sudo apt update && sudo apt install openssh-serversudo yum install openssh-server/etc/ssh/sshd_config,添加/修改以下行(优先使用强算法):Ciphers aes256-gcm@openssh.com,chacha20-poly1305@openssh.com,aes128-gcm@openssh.com,aes256-ctr,aes192-ctr,aes128-ctr
MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com,umac-128-etm@openssh.com
KexAlgorithms curve25519-sha256,curve25519-sha256@libssh.org,diffie-hellman-group-exchange-sha256
sudo systemctl restart sshd(Ubuntu/Debian/CentOS通用)sftp username@remote_host,传输的文件会自动通过SSH加密。若需端到端加密(即使SSH配置泄露,文件仍加密),可使用GnuPG(GPG)对文件进行PGP加密:
gpg --full-generate-key
按提示选择密钥类型(默认RSA)、位数(至少2048位)、有效期及用户信息。publickey.asc)发送给接收方;接收方将自己的公钥发送给发送方:gpg --export -a "Your Name" > publickey.asc
file.txt):gpg --encrypt --recipient "Recipient Name" file.txt
生成加密文件file.txt.gpg。sftp username@remote_host put file.txt.gpg
gpg --decrypt file.txt.gpg > file.txt
输入私钥密码即可解密。避免使用密码认证,改用SSH密钥对提升身份验证安全性:
ssh-keygen -t rsa -b 4096
默认生成id_rsa(私钥,需保密)和id_rsa.pub(公钥)。ssh-copy-id username@remote_host
输入远程服务器密码,公钥会自动添加到~/.ssh/authorized_keys。sftp -i ~/.ssh/id_rsa username@remote_host
无需输入密码,通过密钥认证连接,提升安全性。若需图形界面或更便捷的加密传输,可使用以下工具:
以上方法可根据需求组合使用(如“SSH默认加密+GPG额外加密”),确保文件传输的安全性。