在服务器运维和数据处理中,经常需要在服务器 A 和服务器 B 之间传输文件,但本身 A
与 B 又不是和直接互通。 如果采用“服务器 → 本地 → 服务器”的方式,速度慢、步骤多,
效率很低,这时我们可以临时使用本地 key 去传输。


一、前提条件

  • 本地已经存在可用的 SSH 私钥(例如 ~/.ssh/id_rsa
  • 本地可以通过该 key 登录服务器 A,B
  • 服务器 A 可以访问服务器 B(网络可达)

二、核心思路

使用 scp -i 显式指定本地 SSH Key,
在命令中完成服务器之间的文件直传。

文件传输路径为:

Server A → Server B

不经过本地下载与上传。


三、实操步骤

scp ~/.ssh/id_rsa user@serverA:~/.ssh/id_rsa_local
ssh user@serverA
scp -i ~/.ssh/id_rsa_local fileA user@serverB:/data/

执行后,文件会  直接从服务器 A 传输到服务器 B


四、scp 常用参数说明(重点)

下面是常见且实用的 scp 参数说明:

参数 说明 示例
-i <identity_file> 指定 SSH 私钥文件 scp -i ~/.ssh/id_rsa ...
-r 递归复制目录(复制文件夹必加) scp -i ~/.ssh/id_rsa -r /data/dir ...
-P 指定 SSH 端口(大写 P scp -i ~/.ssh/id_rsa -P 2222 ...
-C 启用压缩(适合文本类或网络较慢场景) scp -i ~/.ssh/id_rsa -C ...
-v 显示详细调试信息(排查连接问题时使用) scp -i ~/.ssh/id_rsa -v ...

五、安全性说明

  • ✅ 明确指定  -i,避免误用其他 key
  • ❌ 不建议服务器之间长期共享私钥,建议使用后删除