Linux中怎么使用sFTP进行上传和下载文件

发布时间:2022-02-10 16:31:20 作者:iii
来源:亿速云 阅读:1077
# Linux中怎么使用sFTP进行上传和下载文件

## 什么是sFTP?

sFTP(SSH File Transfer Protocol)是一种基于SSH协议的安全文件传输协议,它提供了加密的数据传输通道,用于在客户端和服务器之间安全地上传和下载文件。与传统的FTP不同,sFTP不需要额外的端口,默认使用SSH的22端口,并且所有传输的数据都会被加密,避免了明文传输的风险。

## 准备工作

在使用sFTP之前,请确保满足以下条件:

1. **Linux服务器已安装SSH服务**  
   大多数Linux发行版默认安装了OpenSSH服务器。可以通过以下命令检查:
   ```bash
   sudo systemctl status sshd

如果未安装,可以使用以下命令安装(以Ubuntu为例):

   sudo apt update && sudo apt install openssh-server
  1. 客户端支持sFTP
    Linux系统通常内置了sftp命令行工具,Windows用户可以使用WinSCP或FileZilla等图形化工具。

  2. 拥有SSH登录权限
    确保你有服务器的SSH登录账号和密码(或密钥认证权限)。


通过命令行使用sFTP

1. 连接sFTP服务器

在终端中输入以下命令连接sFTP服务器:

sftp username@server_ip

输入密码后,会进入sFTP交互模式,提示符变为:

sftp>

2. 常用sFTP命令

以下是在sftp>交互模式下常用的命令:

命令 作用
ls 列出远程服务器当前目录的文件
lls 列出本地当前目录的文件
cd <目录> 切换远程服务器的工作目录
lcd <目录> 切换本地的工作目录
pwd 显示远程服务器的当前路径
lpwd 显示本地的当前路径
put <本地文件> 上传文件到远程服务器
get <远程文件> 下载远程文件到本地
mkdir <目录名> 在远程服务器创建目录
rmdir <目录名> 删除远程服务器的空目录
rm <文件> 删除远程服务器的文件
exitbye 退出sFTP会话

3. 上传文件示例

假设需要将本地的report.pdf上传到远程服务器的/home/user/documents目录:

sftp> cd /home/user/documents
sftp> put report.pdf
Uploading report.pdf to /home/user/documents/report.pdf

4. 下载文件示例

从远程服务器下载/var/log/app.log到本地当前目录:

sftp> get /var/log/app.log
Fetching /var/log/app.log to ./app.log

5. 批量操作

如果需要上传或下载多个文件,可以使用mputmget命令(支持通配符*):

sftp> mput *.txt      # 上传所有.txt文件
sftp> mget /tmp/*.log # 下载远程/tmp目录下所有.log文件

通过图形化工具使用sFTP

对于不熟悉命令行的用户,推荐使用以下图形化工具:

1. FileZilla(跨平台)

  1. 下载安装FileZilla(官网:https://filezilla-project.org/)。
  2. 打开软件,输入以下信息:
    • 主机:sftp://server_ip
    • 用户名:你的SSH账号
    • 密码:SSH密码
    • 端口:22
  3. 点击“快速连接”,即可通过拖拽上传/下载文件。

2. WinSCP(Windows)

  1. 下载安装WinSCP(官网:https://winscp.net/)。
  2. 选择协议为“SFTP”,填写服务器IP、用户名和密码。
  3. 登录后,左右窗口分别显示本地和远程文件,支持拖拽操作。

高级用法

1. 使用密钥认证(免密码登录)

  1. 生成SSH密钥对(如果尚未生成):
    
    ssh-keygen -t rsa
    
  2. 将公钥上传到服务器:
    
    ssh-copy-id username@server_ip
    
  3. 连接sFTP时无需输入密码:
    
    sftp username@server_ip
    

2. 限制sFTP用户目录

通过修改SSH配置文件(/etc/ssh/sshd_config),可以限制用户仅能通过sFTP访问特定目录:

Match Group sftpusers
    ChrootDirectory /home/sftp_root
    ForceCommand internal-sftp
    AllowTcpForwarding no

重启SSH服务生效:

sudo systemctl restart sshd

3. 自动化脚本

通过Shell脚本结合sftp -b参数实现自动化传输:

#!/bin/bash
sftp -b batch_commands.txt user@server_ip

其中batch_commands.txt内容示例:

put /local/path/file.txt /remote/path/
get /remote/path/data.csv /local/downloads/
exit

常见问题解决

  1. 连接超时
    检查防火墙是否放行22端口,或确认服务器IP是否正确。

  2. 权限拒绝
    确保远程目录有写入权限(chmod命令修改权限)。

  3. 中文乱码
    sftp>模式下输入:

    sftp> set utf8 on
    

总结

sFTP是Linux系统中安全传输文件的首选工具,无论是命令行还是图形化界面都能轻松操作。掌握基础命令后,可以进一步通过密钥认证、目录限制等功能提升安全性和效率。对于需要频繁传输的场景,建议编写自动化脚本简化流程。 “`

(注:实际字数约1450字,此处为简化示例,完整版可扩展更多细节和示例。)

推荐阅读:
  1. sublime使用sftp上传文件
  2. SFTP如何上传及下载文件

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

linux sftp

上一篇:Linux的objdump命令怎么使用

下一篇:Linux中ifup命令有什么用

相关阅读

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

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