Linux sftp 命令

Linux 命令大全 Linux 命令大全


什么是 sftp?

SFTP(SSH File Transfer Protocol)是一种安全的文件传输协议,它通过 SSH(Secure Shell)加密通道传输文件。与传统的 FTP 不同,SFTP 提供了更高的安全性,所有传输的数据都会被加密。

SFTP 与 FTP 的区别

特性 SFTP FTP
安全性 加密传输 明文传输
端口 22(SSH 端口) 21(控制端口)+20(数据端口)
协议 基于 SSH 独立协议
防火墙友好性 只需开放一个端口 需要开放多个端口

sftp 命令基本语法

sftp [选项] [用户名@]主机名[:路径]

常用选项参数

选项 说明
-P 端口号 指定连接端口(默认22)
-b 批处理文件 执行批处理文件中的命令
-r 递归复制整个目录
-v 显示详细的调试信息
-i 私钥文件 使用指定的私钥文件认证

连接 SFTP 服务器

基本连接方式

实例

sftp username@hostname

示例:

实例

sftp user@example.com

指定端口连接

如果服务器使用非标准端口(不是22):

实例

sftp -P 2222 user@example.com

使用密钥认证

实例

sftp -i ~/.ssh/id_rsa user@example.com

SFTP 常用操作命令

1. 本地文件操作

命令 说明
lls 列出本地目录内容
lcd 更改本地工作目录
lmkdir 在本地创建目录
lrm 删除本地文件

2. 远程文件操作

命令 说明
ls 列出远程目录内容
cd 更改远程工作目录
mkdir 在远程创建目录
rm 删除远程文件
rename 重命名远程文件

3. 文件传输

命令 说明
put 本地文件 [远程路径] 上传文件到远程服务器
get 远程文件 [本地路径] 从远程服务器下载文件
mput 本地文件* 上传多个文件
mget 远程文件* 下载多个文件

实用示例

示例1:上传文件到服务器

实例

sftp user@example.com
sftp> cd /var/www/html
sftp> put index.html
sftp> exit

示例2:下载整个目录(递归)

实例

sftp -r user@example.com:/backups /local/backups

示例3:使用批处理文件

创建 sftp_commands.txt

put file1.txt
put file2.txt
get report.pdf
exit

执行批处理:

实例

sftp -b sftp_commands.txt user@example.com

高级技巧

1. 使用通配符传输多个文件

实例

sftp> mput *.jpg      # 上传所有jpg文件
sftp> mget log_*.txt  # 下载所有log_开头的txt文件

2. 更改文件权限

实例

sftp> chmod 644 index.html

3. 查看文件信息

实例

sftp> ls -l

4. 使用符号链接

实例

sftp> symlink /path/to/original /path/to/link

常见问题解决

1. 连接被拒绝

  • 检查服务器是否运行 SSH 服务
  • 确认端口是否正确
  • 检查防火墙设置

2. 认证失败

  • 确认用户名和密码正确
  • 检查密钥文件权限(应为600)
  • 确保服务器上有你的公钥

3. 文件传输中断

  • 检查网络连接
  • 尝试使用 regetreput 命令恢复传输

4. 权限不足

  • 检查远程目录的写权限
  • 可能需要使用 sudo(但 sftp 通常不支持直接 sudo)

安全最佳实践

  1. 使用密钥认证而非密码认证
  2. 限制用户权限,使用 chroot 环境
  3. 定期更新 SSH 服务器软件
  4. 禁用 root 登录,使用普通用户+sudo
  5. 监控日志文件(/var/log/auth.log)

总结

SFTP 是 Linux 系统中安全传输文件的重要工具,通过本指南,你应该已经掌握了:

  • SFTP 的基本概念和连接方式
  • 常用的文件操作和传输命令
  • 实用的批处理和高级技巧
  • 常见问题的解决方法
  • 安全使用的最佳实践

现在你可以安全高效地在本地和远程服务器之间传输文件了!

Linux 命令大全 Linux 命令大全