在服务器运维和数据处理中,经常需要在服务器 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 |
执行后,文件会 直接从服务器 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 - ❌ 不建议服务器之间长期共享私钥,建议使用后删除