尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
Linux命令-sftp(SSH 文件传输协议客户端)
Linux命令-sftpSSH 文件传输协议客户端 简介 语法⚙️ 选项 交互命令远程操作命令本地操作命令文件传输命令控制命令 示例示例 1交互式基本操作示例 2非交互模式——在 Shell 中执行单条 SFTP 命令示例 3批量文件传输——使用批处理文件示例 4SSH 密钥认证与安全加密示例 5SFTP 运维实战——Web 站点部署示例 6SFTP 断点续传与传输限制⚠️ 注意 相关命令 总结快速参考sftp是基于 SSH 的安全文件传输客户端提供交互式命令行界面支持上传、下载、目录浏览、权限管理等完整文件操作。所有数据通过 SSH 加密通道传输是 FTP 的安全替代方案。sftp与 FTPS (FTP over SSL/TLS) 是不同的协议。sftp 运行在 SSH 子系统中默认端口 22只需 SSH 服务即可无需额外守护进程。 简介SFTPSSH File Transfer Protocol是 SSH 协议族的一部分由 IETF 在draft-ietf-secsh-filexfer系列草案中定义。与 SCP 不同SFTP 是一个有状态的交互式协议支持断点续传、目录列表、权限修改等高级操作功能远超 SCP。安装状态sftp随 OpenSSH 客户端一同安装几乎所有 Linux 发行版默认包含。# 检查 sftp 是否可用$whichsftp/usr/bin/sftp# 如不存在极少见安装方式# Debian/Ubuntu$sudoapt-getinstallopenssh-client# RHEL/CentOS/Fedora$sudoyuminstallopenssh-clients 语法sftp[选项][用户]主机[:路径]sftp[选项][用户]主机[:源文件][目标路径]sftp-b批处理文件[用户]主机第一种形式进入交互模式第二种形式用于单次文件下载类似 scp第三种形式用于非交互的批量操作。⚙️ 选项选项说明-P 端口指定 SSH 连接端口注意大写 P与 ssh 命令不同-i 私钥文件指定用于认证的 SSH 私钥-b 批处理文件从文件读取 SFTP 命令非交互式执行-o ssh_option传递额外 SSH 选项如-o StrictHostKeyCheckingno-C启用 SSH 压缩传输-c 加密算法指定加密算法如aes256-gcmopenssh.com-l 限制值限制传输带宽单位 KB/s-r递归复制整个目录交互模式下已废弃使用get -r-v详细输出模式便于调试连接问题-q静默模式不显示进度信息 交互命令进入 SFTP 后的交互命令体系是 SFTP 最强大的部分远程操作命令命令说明ls [目录]列出远程目录内容cd 目录切换远程工作目录pwd显示远程当前目录mkdir 目录创建远程目录rmdir 目录删除远程空目录rm 文件删除远程文件rename 旧名 新名重命名远程文件chmod 模式 文件修改远程文件权限chown 属主 文件修改远程文件所有者需权限chgrp 组 文件修改远程文件所属组df [-h]显示远程文件系统磁盘使用情况stat 文件显示远程文件详细信息类似于 ls -l 但更丰富ln [-s] 源 目标创建远程硬链接或符号链接symlink 源 目标创建远程符号链接本地操作命令命令说明lls [目录]列出本地目录内容lcd 目录切换本地工作目录lpwd显示本地当前目录lmkdir 目录创建本地目录!命令在本地 Shell 中执行命令例如!ls -la文件传输命令命令说明get [-r] 远程文件 [本地路径]下载远程文件-r递归下载目录put [-r] 本地文件 [远程路径]上传本地文件-r递归上传目录mget 通配符批量下载支持*?通配符mput 通配符批量上传reget 远程文件断点续传下载reput 本地文件断点续传上传progress切换传输进度显示控制命令命令说明bye/exit/quit退出 SFTP 会话help [命令]显示帮助信息version显示 SFTP 协议版本 示例示例 1交互式基本操作$sftpalice192.168.1.100 Connected to192.168.1.100. sftppwdRemote working directory: /home/alice sftplpwd Local working directory: /home/bob/projects sftpls-ladrwxr-xr-x6alice alice4096Jun1410:00.drwxr-xr-x4root root4096Jun1008:00..-rw-r--r--1alice alice220Jun1409:30 .bash_logout -rw-r--r--1alice alice3771Jun1409:30 .bashrc drwxr-xr-x2alice alice4096Jun1410:00 documents sftpcddocuments sftpput report.txt Uploading report.txt to /home/alice/documents/report.txt report.txt100%20482.0KB/s 00:00 sftpget logfile.txt Fetching /home/alice/documents/logfile.txt to logfile.txt logfile.txt100%40964.0KB/s 00:00 sftplls logfile.txt report.txt notes.md sftprmold_backup.tar.gz Removing /home/alice/documents/old_backup.tar.gz sftpbye# 预期输出# 成功连接 → 浏览目录 → 上传 report.txt → 下载 logfile.txt → 删除旧备份 → 退出示例 2非交互模式——在 Shell 中执行单条 SFTP 命令# 直接下载单个文件类似 scp 用法$sftpbobfileserver:/var/log/nginx/access.log ./my_access.log Fetching /var/log/nginx/access.log to ./my_access.log /var/log/nginx/access.log100% 125MB12.5MB/s 00:10# 上传文件$sftpbobfileserver:./deploy.tar.gz /tmp/ 注意此用法上传时第一个参数是本地文件第二个是远程目标# 使用 Here Document 执行多条命令$sftpdeploysftp.example.comEOF cd /var/www/html put index.html put style.css put app.js ls -la bye EOF# 预期输出# sftp cd /var/www/html# sftp put index.html进度条# sftp put style.css进度条# sftp put app.js进度条# sftp ls -la# drwxr-xr-x ... index.html# -rw-r--r-- ... style.css# -rw-r--r-- ... app.js# sftp bye示例 3批量文件传输——使用批处理文件# Step 1: 创建批处理命令文件$catbatch_download.sftpCMDS cd /backup/database lcd /local/restore get db_dump_20260614.sql.gz get innodb_backup.tar.gz cd /backup/logs lcd /local/restore/logs mget *.log rm *.log.old bye CMDS# Step 2: 执行批处理传输$sftp-bbatch_download.sftp admindbserver sftpcd/backup/database sftplcd /local/restore sftpget db_dump_20260614.sql.gz Fetching /backup/database/db_dump_20260614.sql.gz to /local/restore/db_dump_20260614.sql.gz sftpget innodb_backup.tar.gz Fetching /backup/database/innodb_backup.tar.gz to /local/restore/innodb_backup.tar.gz sftpcd/backup/logs sftplcd /local/restore/logs sftpmget *.log Fetching /backup/logs/error.log to /local/restore/logs/error.log Fetching /backup/logs/access.log to /local/restore/logs/access.log sftprm*.log.old Removing /backup/logs/error.log.old Removing /backup/logs/access.log.old# 批处理文件的通用格式# - 每行一条 SFTP 交互命令# - 支持所有 sftp 交互命令ls/cd/get/put/rm 等# - 最后以 bye/exit/quit 结束# 在 cron 定时任务中使用批处理$crontab-e# 每天凌晨 3 点自动下载数据库备份03* * *sftp-b/scripts/batch_download.sftp-oStrictHostKeyCheckingno admindbserver/var/log/sftp_cron.log21示例 4SSH 密钥认证与安全加密# Step 1: 生成专用 SFTP 密钥对$ ssh-keygen-ted25519-f~/.ssh/sftp_key-CsftpmyhostGenerating public/private ed25519 key pair. Your identification has been savedin/home/user/.ssh/sftp_key Your public key has been savedin/home/user/.ssh/sftp_key.pub# Step 2: 将公钥部署到远程服务器$ ssh-copy-id-i~/.ssh/sftp_key.pub usersftp-server# 或者手动部署无 ssh-copy-id 时$cat~/.ssh/sftp_key.pub|sshusersftp-servermkdir -p ~/.ssh cat ~/.ssh/authorized_keys# Step 3: 指定私钥连接$sftp-i~/.ssh/sftp_key usersftp-server Connected to sftp-server. sftpls无需输入密码直接进入交互模式# Step 4: SSH 配置文件简化$cat~/.ssh/configCONFIG Host sftp-prod HostName sftp.corp.example.com Port 2222 User deploy IdentityFile ~/.ssh/sftp_key StrictHostKeyChecking yes CONFIG# 现在可以用别名连接$sftpsftp-prod Connected to sftp.corp.example.com. sftp# 预期效果一键连接无需记忆 IP/端口/用户名/密钥路径示例 5SFTP 运维实战——Web 站点部署#!/bin/bash# Web 站点通过 SFTP 部署脚本SFTP_HOSTweb-prodREMOTE_ROOT/var/www/html/mysite# 本地构建目录BUILD_DIR./distecho 开始部署到$SFTP_HOST# 清理远程旧文件echo清理远程旧文件...sftp-b-$SFTP_HOSTSFTPEOF cd /var/www/html/mysite rm -rf css js images rm index.html SFTPEOF# 上传新构建文件echo上传构建产物...cd$BUILD_DIR# 递归上传目录sftp-b-$SFTP_HOSTSFTPEOF cd$REMOTE_ROOTput -r css put -r js put -r images put index.html put favicon.ico chmod 644 *.html *.ico chmod 755 css js images bye SFTPEOFecho 部署完成 # 验证部署sftp$SFTP_HOSTSFTPEOF cd /var/www/html/mysite ls -la df -h bye SFTPEOF# 预期输出# 开始部署到 web-prod # 清理远程旧文件...# 上传构建产物...# 部署完成 # sftp ls -la# drwxr-xr-x ... css# drwxr-xr-x ... js# drwxr-xr-x ... images# -rw-r--r-- ... index.html# sftp df -h# Size Used Avail (root) /dev/vda1 50.0G 12.5G 37.5G /示例 6SFTP 断点续传与传输限制# 断点续传下载reget resume getsftpuserhost sftpreget large_video.mp4 Resuming /remote/path/large_video.mp4 to large_video.mp4 large_video.mp450% 500MB10.2MB/s 00:25 ETA# 如果中途断开重新连接后sftpuserhost sftpreget large_video.mp4 Resuming large_video.mp4 at byte524288000large_video.mp4100% 1000MB10.0MB/s 01:38# 限制传输带宽-l 参数单位 KB/s$sftp-l1024userhost# 限制为 1MB/s1024 KB/ssftpget huge_database.dump huge_database.dump30% 300MB 1024KB/s 05:00 ETA# 带宽被限制在 1MB/s避免占满网络# 启用压缩传输-C 参数对文本文件效果明显$sftp-Cuserhost sftpput large_log.txt# 压缩传输可显著减少文本数据的传输量⚠️ 注意SFTP vs SCP 的选择建议虽然两者都基于 SSH但适用场景不同特性SFTPSCP协议类型有状态交互式无状态一次性传输断点续传✅ 支持reget❌ 不支持目录列表✅ls/dir❌ 不支持远程文件管理✅ 完整的rm/mkdir/chmod❌ 不支持传输速度略慢协议开销稍大略快开销小适用场景交互操作、批量管理简单一次性传输常见连接问题排查连接超时检查 SSH 端口是否正确-P而非-p防火墙是否放行权限拒绝确认密钥权限为 600chmod 600 ~/.ssh/id_*找不到 sftp 子系统检查远程/etc/ssh/sshd_config中Subsystem sftp是否配置 相关命令命令说明scp基于 SSH 的简单文件复制工具rsync高级文件同步工具支持增量传输和丰富选项sshSSH 客户端sftp 运行在其协议之上sshfs通过 SSH 挂载远程文件系统到本地lftp多协议文件传输客户端支持 sftp/ftp/http 等curl支持 SFTP 协议sftp://URL用于脚本集成 总结sftp是 Linux 系统管理员和开发者的日常必备工具它完美结合了 SSH 的安全性和 FTP 的交互便利性。核心优势安全性全数据通过 SSH 加密传输无明文风险免部署只需 SSH 服务即可无需额外安装 FTP 守护进程交互性支持完整的远程文件管理操作浏览、增删改、权限管理可脚本化批处理模式和 Here Document 支持自动化运维断点续传大文件传输中断后可恢复节省时间和带宽日常文件传输首选 SFTP仅在需要增量同步/镜像备份时使用rsync仅在极简一次性传输时使用scp。
RELATED

相关推荐

如何用VJ-FILTER-BOT打造高效文件管理系统?实用案例分享

如何用VJ-FILTER-BOT打造高效文件管理系统?实用案例分享

如何用VJ-FILTER-BOT打造高效文件管理系统?实用案例分享 【免费下载链接】VJ-FILTER-BOT A Advance Auto Filter Bot With Clone And Amazing Features. 项目地址: https://gitcode.com/gh_mirrors/vj/VJ-FILTER-BOT VJ-FILTER-BOT是一款功能强大的自动化文件…

📅 2026/9/14 20:04:27
OpenClaw智能体开发框架解析与应用实践

OpenClaw智能体开发框架解析与应用实践

1. OpenClaw智能体生态现状解析OpenClaw作为国内新兴的智能体开发框架,其生态正处于快速扩张阶段。目前主流应用主要集中在金融分析、工业物联网和自动化工作流三大领域。以某证券机构使用的量化分析智能体为例,通过对接实时行情数据接口,能在…

📅 2026/9/14 20:04:31
JAX/Flax实现Dreamer 4世界模型:Open Dreamer开源项目详解

JAX/Flax实现Dreamer 4世界模型:Open Dreamer开源项目详解

如果你正在探索强化学习的世界模型技术,可能会发现一个尴尬的现实:很多前沿研究要么停留在论文层面难以复现,要么依赖复杂的PyTorch/TensorFlow生态,让想要快速实验的开发者望而却步。最近,Reactor团队开源的Open Drea…

📅 2026/8/24 14:55:14
MORE NEWS

更多资讯

📰

Unity逆向九层解剖:从Assembly-CSharp.dll到运行时逻辑穿透

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

携程酒店数据采集技术解析与应用实践

1. 项目背景与需求分析 2026年携程酒店数据抓取这个项目,本质上是一个典型的旅游行业数据采集需求。作为国内领先的OTA平台,携程积累了海量酒店价格、房型、点评等核心数据,这些数据对旅游行业从业者、数据分析师乃至普通消费者都具有重要价值…

📰

手机端GLB压缩实战:Meshopt与Draco分层优化策略

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

SWE-bench 的评测结果信不过?让 Codex 改走 TaoToken 复核行不行

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

按月付费销售增长咨询服务模式解析与实战

1. 项目概述:按月付费销售增长咨询服务的商业价值"按月付费无压力,润行销售增长咨询更贴心"这个标题揭示了一种创新的企业咨询服务模式——将传统的销售增长咨询服务转变为按月付费的灵活订阅制。这种模式正在改变企业获取专业咨询服务的门槛和…

📰

SPSS文件格式解析:.sav与.spv的核心区别与应用

1. 文件格式概述:.sav与.spv的前世今生 第一次接触SPSS软件的研究人员,往往会对软件生成的.sav和.spv文件产生困惑。这两种扩展名看似相似,实则承担着完全不同的使命。.sav文件是SPSS的"数据容器",存储着原始数据、变量…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬