插件窝 干货文章 如何使用SFTP进行安全文件传输

如何使用SFTP进行安全文件传输

SFTP 文件 传输 公钥    来源:    2025-05-07

使用SFTP进行安全文件传输指南

SFTP(SSH File Transfer Protocol)是一种安全的文件传输协议,通过加密的SSH连接传输文件,比传统的FTP更安全。以下是使用SFTP的详细方法:

1. 基本概念

  • SFTP vs FTP:SFTP通过SSH加密所有传输数据,而FTP是明文传输
  • 默认端口:22(与SSH相同)
  • 认证方式:支持密码认证和公钥认证

2. 连接SFTP服务器

命令行方式

sftp username@hostname
# 或指定端口
sftp -P port_number username@hostname

使用图形化工具

常用SFTP客户端: - WinSCP (Windows) - FileZilla (跨平台) - Cyberduck (Mac) - Transmit (Mac)

3. 常用SFTP命令

命令 描述
ls 列出远程目录内容
lls 列出本地目录内容
cd 更改远程工作目录
lcd 更改本地工作目录
get 下载文件
put 上传文件
mget 下载多个文件
mput 上传多个文件
rm 删除远程文件
mkdir 创建远程目录
exit/bye 退出SFTP会话

4. 文件传输示例

下载文件

sftp> get remote_file.txt
sftp> get remote_file.txt local_name.txt  # 下载并重命名
sftp> get -r remote_directory  # 递归下载目录

上传文件

sftp> put local_file.txt
sftp> put local_file.txt remote_name.txt  # 上传并重命名
sftp> put -r local_directory  # 递归上传目录

5. 高级用法

使用公钥认证

  1. 生成SSH密钥对: bash ssh-keygen -t rsa
  2. 将公钥上传到服务器: bash ssh-copy-id username@hostname
  3. 连接时将自动使用密钥认证

批量脚本传输

#!/bin/bash
sftp -b batchfile.txt username@hostname

其中batchfile.txt包含SFTP命令,如:

put file1.txt
put file2.txt
bye

6. 安全最佳实践

  1. 禁用密码认证:配置SSH服务器只允许公钥认证
  2. 使用强密码:如果必须使用密码认证
  3. 限制用户访问:使用chroot限制用户只能访问特定目录
  4. 定期更新密钥:定期更换SSH密钥
  5. 监控日志:检查/var/log/auth.log等日志文件

7. 常见问题解决

连接被拒绝: - 检查服务器SSH服务是否运行:sudo service ssh status - 检查防火墙设置是否允许22端口

认证失败: - 确认用户名/密码正确 - 检查公钥是否已正确添加到服务器的~/.ssh/authorized_keys

传输速度慢: - 尝试压缩传输:sftp -C username@hostname - 检查网络状况

通过以上方法,您可以安全高效地使用SFTP进行文件传输。对于敏感数据,建议始终使用SFTP而非FTP。