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.com

2. 指定端口连接

注意:sftp 使用的是大写 -P

sftp -P 2222 alice@example.com

3. 指定私钥连接

sftp -i ~/.ssh/id_ed25519 alice@example.com

4. 上传单个文件

连接后在 sftp> 提示符中执行:

put local.txt
put local.txt remote.txt

5. 下载单个文件

get remote.txt
get remote.txt local.txt

6. 上传整个目录

put -r mydir

7. 下载整个目录

get -r remote_dir

8. 切换远程目录

cd /remote/path
pwd
ls

9. 切换本地目录

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退出 sftpbye

常见注意事项

1. -P 是大写

sftp 指定端口使用大写 -P,不是小写 -p

sftp -P 2222 alice@example.com

2. 第一次连接会确认主机指纹

首次连接通常会看到类似提示:

Are you sure you want to continue connecting (yes/no/[fingerprint])?

确认无误后输入:

yes

3. 有些服务器只允许密钥登录

这类场景通常要先准备 SSH 私钥:

sftp -i ~/.ssh/id_ed25519 alice@example.com

4. 区分本地命令和远程命令

  • 远程:cdpwdls
  • 本地:lcdlpwdlls

5. 路径里有空格时要加引号

put "my report.pdf"
get "remote file.txt"

常见报错与处理

Connection refused

常见原因:

  • 服务器地址不对
  • 端口不对
  • 服务器未开启 SSH/SFTP 服务

优先检查:

sftp -P 端口 用户名@服务器

Permission denied

常见原因:

  • 用户名错误
  • 密码错误
  • 私钥不匹配
  • 目标目录无权限

优先检查:

sftp -i ~/.ssh/id_ed25519 用户名@服务器

连接后再用 pwdls 确认当前可访问目录。

No such file or directory

常见原因:

  • 本地文件名写错
  • 远程路径写错
  • 当前目录不是你以为的位置

优先检查:

lpwd
lls
pwd
ls

Host 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

本文链接:

https://www.abo.moe/archives/77.html
1 + 4 =
快来做第一个评论的人吧~
The Website have been running for 438 days.