SFTP命令速查表
macOS 自带 sftp(基于 OpenSSH),适合通过 SSH 安全上传和下载文件。
基本语法
sftp [选项] [user@]host常见形式:
sftp alice@example.com
sftp -P 2222 alice@example.com
sftp -i ~/.ssh/id_ed25519 alice@example.com
sftp sftp://alice@example.com:2222/path最常见场景速查
1. 连接服务器
sftp 用户名@服务器示例:
sftp alice@example.com2. 指定端口连接
注意:sftp 使用的是大写 -P。
sftp -P 2222 alice@example.com3. 指定私钥连接
sftp -i ~/.ssh/id_ed25519 alice@example.com4. 上传单个文件
连接后在 sftp> 提示符中执行:
put local.txt
put local.txt remote.txt5. 下载单个文件
get remote.txt
get remote.txt local.txt6. 上传整个目录
put -r mydir7. 下载整个目录
get -r remote_dir8. 切换远程目录
cd /remote/path
pwd
ls9. 切换本地目录
lcd ~/Downloads
lpwd
lls典型操作示例
上传文件到远程目录
sftp alice@example.com
sftp> cd /var/www/files
sftp> lcd ~/Downloads
sftp> put report.pdf
sftp> bye下载远程文件到本地当前目录
sftp alice@example.com
sftp> lcd ~/Desktop
sftp> get /var/log/app.log
sftp> bye上传目录并保留结构
sftp alice@example.com
sftp> lcd ~/project
sftp> put -r assets进阶常用场景
1. 断点续传
-a 会尝试续传中断的传输。
sftp -a alice@example.com进入后继续用 get / put。
注意:如果本地残缺文件和远端文件内容不一致,续传结果可能损坏。
2. 批处理执行命令
准备批处理文件 batch.txt:
lcd ~/Downloads
cd /remote/path
get report.pdf
put local.zip
bye执行:
sftp -b batch.txt alice@example.com适合自动化脚本、定时任务和重复传输。
3. 限速传输
-l 单位是 Kbit/s。
sftp -l 1024 alice@example.com表示将带宽限制在约 1024 Kbit/s。
4. 通过跳板机连接
sftp -J jumpuser@jump.example.com alice@target.example.com如果公司环境要求先登录堡垒机,这是最常见写法。
5. 使用 URI 写法
sftp sftp://alice@example.com:2222/home/alice适合在脚本、文档中明确写出协议、端口和路径。
常用交互命令表
| 命令 | 作用 | 示例 |
|---|---|---|
help | 查看帮助 | help |
ls | 查看远程目录内容 | ls /var/www |
pwd | 显示当前远程目录 | pwd |
cd | 切换远程目录 | cd /remote/path |
mkdir | 创建远程目录 | mkdir backup |
rm | 删除远程文件 | rm old.log |
rename | 重命名远程文件 | rename a.txt b.txt |
get | 下载文件 | get remote.txt |
put | 上传文件 | put local.txt |
get -r | 递归下载目录 | get -r logs |
put -r | 递归上传目录 | put -r assets |
lpwd | 显示当前本地目录 | lpwd |
lcd | 切换本地目录 | lcd ~/Downloads |
lls | 查看本地目录内容 | lls |
bye / exit / quit | 退出 sftp | bye |
常见注意事项
1. -P 是大写
sftp 指定端口使用大写 -P,不是小写 -p。
sftp -P 2222 alice@example.com2. 第一次连接会确认主机指纹
首次连接通常会看到类似提示:
Are you sure you want to continue connecting (yes/no/[fingerprint])?确认无误后输入:
yes3. 有些服务器只允许密钥登录
这类场景通常要先准备 SSH 私钥:
sftp -i ~/.ssh/id_ed25519 alice@example.com4. 区分本地命令和远程命令
- 远程:
cd、pwd、ls - 本地:
lcd、lpwd、lls
5. 路径里有空格时要加引号
put "my report.pdf"
get "remote file.txt"常见报错与处理
Connection refused
常见原因:
- 服务器地址不对
- 端口不对
- 服务器未开启 SSH/SFTP 服务
优先检查:
sftp -P 端口 用户名@服务器Permission denied
常见原因:
- 用户名错误
- 密码错误
- 私钥不匹配
- 目标目录无权限
优先检查:
sftp -i ~/.ssh/id_ed25519 用户名@服务器连接后再用 pwd、ls 确认当前可访问目录。
No such file or directory
常见原因:
- 本地文件名写错
- 远程路径写错
- 当前目录不是你以为的位置
优先检查:
lpwd
lls
pwd
lsHost key verification failed
常见原因:
- 服务器指纹变化
- 本机
known_hosts中保存了旧记录
处理思路:
- 先确认服务器是否确实变更
- 再清理或更新对应主机的旧指纹记录
一页记忆版
最常用的就是这几条:
sftp alice@example.com
sftp -P 2222 alice@example.com
sftp -i ~/.ssh/id_ed25519 alice@example.com
put local.txt
get remote.txt
put -r mydir
get -r remote_dir
lcd ~/Downloads
cd /remote/path
bye