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。

相关新闻

如何用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/10/18 12:37:06 阅读更多 →
行空板图形化Python编程:从积木到代码的平滑进阶指南

行空板图形化Python编程:从积木到代码的平滑进阶指南

1. 项目缘起:为什么选择行空板作为图形化Python的起点?如果你对编程感兴趣,尤其是Python,但一打开代码编辑器,面对满屏的英文和括号就感到头大,那么“行空板”这个名字,你很可能已经听过不止一次…

2026/10/18 13:28:18 阅读更多 →
Python实战:从零构建命令行学生成绩管理系统

Python实战:从零构建命令行学生成绩管理系统

1. 项目缘起:为什么我要自己写一个成绩管理程序?作为一名在一线摸爬滚打多年的开发者,我处理过不少和数据管理相关的需求。最近,一位在中学任教的朋友向我吐槽,他们学校还在用Excel表格手动录入、计算学生的期中、期末…

2026/10/19 5:59:36 阅读更多 →

最新新闻

Maven依赖下载慢?手把手教你配置国内镜像仓库加速构建

Maven依赖下载慢?手把手教你配置国内镜像仓库加速构建

Maven 拉依赖慢,几乎是每个在本地做 Java 开发的人都会撞上的问题。新拉一个项目,第一次执行mvn clean package,进度条像卡住了一样,控制台不停输出Downloading from central,动辄十几分钟乃至直接超时失败&#xff0c…

2026/10/19 13:32:23 阅读更多 →
Windows 7多用户管理:从控制面板到命令行的账户添加与权限实践

Windows 7多用户管理:从控制面板到命令行的账户添加与权限实践

在公司或者家里,只要你用过Windows 7,就一定遇到过这样的场景:一台电脑摆在那里,家里几口人都要用,或者办公室里几个人轮流用一台公共机器。每个人都有自己的桌面壁纸、文件、浏览器收藏夹,结果谁也不敢动设…

2026/10/19 13:32:23 阅读更多 →
资源管理器进程结束导致黑屏?三步快速恢复桌面

资源管理器进程结束导致黑屏?三步快速恢复桌面

很多朋友第一次碰到这种情况,心里大概都咯噔一下:桌面没了,任务栏没了,只有壁纸和鼠标指针孤零零地留在屏幕上,甚至干脆全黑。我之前帮人远程看电脑,对方就是在任务管理器里选中“Windows 资源管理器”&…

2026/10/19 13:32:23 阅读更多 →
企业级AI视频平台源码重构与低代码交付实战

企业级AI视频平台源码重构与低代码交付实战

前阵子接了一个企业级AI视频管理平台的二次开发需求。平台本身是企业采购过的老系统,视频上传、转码、基础审核、目录分类这些能力都有,团队也想在它上面快速加功能。但真实需求一落地就发现不行——客户要的不再是"把视频管起来",…

2026/10/19 13:32:23 阅读更多 →
机器学习导论习题解答:题型分类、解题路径与刷题避坑指南

机器学习导论习题解答:题型分类、解题路径与刷题避坑指南

很多人学机器学习导论,最容易产生的错觉就是"课上听懂了,课后就会做题了"。线性回归讲完觉得不就是拟合一条线嘛,逻辑回归讲完觉得不就是套个sigmoid嘛,可真到习题集面前,面对一道综合题,常常连第…

2026/10/19 13:32:23 阅读更多 →
Open-Code-Review:代码评审范式升级与LLM Agent实践

Open-Code-Review:代码评审范式升级与LLM Agent实践

1. “open-code-review”不是工具名,而是正在发生的开发范式迁移 你最近在 GitHub Trending、Hacker News 或团队 Slack 里反复看到 open-code-review 这个词,但它既不是某个新发布的 CLI 工具,也不是某家公司的 SaaS 产品名称——它是一个…

2026/10/19 13:31:23 阅读更多 →

日新闻

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

简介:本资源为电源技术方向的学术研究文档,聚焦介质阻挡放电型臭氧发生器电源的频率跟踪型PWM控制策略,面向电力电子、高压电源及臭氧应用领域的科研人员与工程技术人员。针对负载呈容性、等效电容随外加电压升高而增大、谐振频率随之漂移的难…

2026/10/19 0:00:47 阅读更多 →
Vibe Coding 遇上 TaoToken:把开发者思维圣殿的灵感流接入统一 Key 通道

Vibe Coding 遇上 TaoToken:把开发者思维圣殿的灵感流接入统一 Key 通道

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

2026/10/19 0:00:47 阅读更多 →
HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

【免费下载链接】HundredCV-Chat 项目地址: https://ai.gitcode.com/hf_mirrors/Jax-dan/HundredCV-Chat 点击查看 免费下载 HundredCV-Chat 是一个由 100 位青年简历数据开发而来的中文多轮对话数据集,共包含 24,750 组日常闲聊对话和 4,871 个话题标签…

2026/10/19 0:00:47 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/19 10:02:04 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/19 1:30:52 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

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

2026/10/19 2:54:50 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

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

2026/10/19 9:10:22 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

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

2026/10/18 12:16:16 阅读更多 →