Linux中怎么使用sftp传输文件/文件夹

发布时间:2022-01-27 14:32:34 作者:iii
来源:亿速云 阅读:561
# Linux中怎么使用sftp传输文件/文件夹

## 一、SFTP简介

SFTP(SSH File Transfer Protocol)是基于SSH协议的安全文件传输工具,相比传统的FTP具有以下优势:
- 加密所有传输数据
- 使用SSH默认端口22(无需额外开端口)
- 支持交互式和脚本化操作
- 保留文件属性和权限

## 二、基础连接方法

### 1. 基本连接语法
```bash
sftp [选项] [用户名@]主机名/IP地址

常用选项: - -P port:指定非默认SSH端口 - -i identity_file:指定私钥文件 - -o option:设置SSH参数

2. 认证方式

密码认证(默认)

sftp user@192.168.1.100
# 输入用户密码后进入sftp>提示符

密钥认证(推荐)

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

三、文件传输操作

1. 上传文件

# 上传单个文件
put local_file.txt /remote/path/

# 上传时重命名
put local_file.txt /remote/path/new_name.txt

# 上传多个文件
put *.jpg /remote/path/

2. 下载文件

# 下载单个文件
get /remote/path/file.txt ~/local/

# 下载时重命名
get /remote/path/file.txt ~/local/new_name.txt

# 递归下载目录(需配合-r选项)
get -r /remote/dir/ ~/local/

3. 目录操作

# 查看远程目录
ls
lls  # 查看本地目录

# 切换目录
cd /remote/path
lcd ~/local  # 切换本地目录

# 创建目录
mkdir new_dir
lmkdir local_dir  # 本地创建

四、高级传输技巧

1. 递归传输目录

# 上传整个目录
put -r local_dir /remote/path/

# 下载整个目录
get -r /remote/dir/ ~/local/

2. 限速传输(避免带宽占满)

sftp -o "IPQoS=throughput" user@host  # 限制为普通优先级

3. 断点续传

# 下载时恢复中断的传输
reget /remote/bigfile.zip

# 上传时恢复
reput large_file.iso

五、批量传输与自动化

1. 使用批处理文件

创建transfer.txt

put /local/path/file1.txt
put /local/path/file2.txt
get /remote/path/data.csv
exit

执行:

sftp -b transfer.txt user@host

2. Shell脚本示例

#!/bin/bash
HOST="user@example.com"
PASS="your_password"

expect <<EOF
spawn sftp $HOST
expect "password:"
send "$PASS\r"
expect "sftp>"
send "put /local/file.txt /remote/\r"
expect "sftp>"
send "exit\r"
EOF

六、常见问题解决

1. 连接超时问题

sftp -o ConnectTimeout=30 user@host  # 设置超时时间

2. 权限错误处理

# 查看远程文件权限
ls -l /path/to/file

# 可能需要先创建目标目录
mkdir -p /remote/new/path

3. 中文乱码问题

LANG=zh_CN.UTF-8 sftp user@host  # 指定编码

七、图形化工具推荐

虽然命令行足够强大,但以下GUI工具可能更适合初学者: 1. FileZilla:支持SFTP的跨平台客户端 2. Nautilus(GNOME文件管理器):支持sftp://协议 3. Dolphin(KDE文件管理器):内置SFTP支持 4. WinSCP(Windows用户):优秀的SFTP图形客户端

八、安全注意事项

  1. 禁用root登录:在/etc/ssh/sshd_config中设置:
    
    PermitRootLogin no
    
  2. 使用强密码:建议16位以上混合字符
  3. 定期更换密钥:至少每6个月更新一次SSH密钥
  4. 限制用户目录
    
    chroot_local_user=yes
    

九、性能优化建议

  1. 大文件传输时启用压缩:
    
    sftp -C user@host
    
  2. 网络不稳定时使用rsync over SSH更可靠:
    
    rsync -avz -e ssh /local/path/ user@host:/remote/path/
    
  3. 大量小文件建议先打包再传输

十、扩展学习

  1. 相关命令对比

    命令 协议 加密 端口 特点
    ftp FTP 21 传统文件传输
    sftp SSH 22 安全文件传输
    scp SSH 22 简单文件拷贝
    rsync SSH/RSYNC 22 增量同步/断点续传
  2. 深入学习SSH

    man ssh_config
    man sshd_config
    

通过掌握这些SFTP技巧,您可以安全高效地在Linux系统间传输文件,满足日常运维和开发需求。 “`

(注:实际字数约1450字,可根据需要删减部分章节或示例调整到1350字左右)

推荐阅读:
  1. linux属于一种什么系统
  2. 怎么在Linux中导入导出mysql数据库

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

linux sftp

上一篇:Linux如何使用gdb调试多进程

下一篇:jstat命令怎么使用

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》