具有 2 个不同 .pem 密钥的 2 个服务器之间的 scp 命令

Scp command between 2 servers with 2 different .pem keys

我想使用 scp 和 2 个不同的 .pem 密钥将文件夹从服务器 A 传输到服务器 B。

这是解决问题的最佳方法吗?它真的有效吗?

scp -i ~/Documents/server1.pem -r root@server1.com:~/location/to/dir -i ~/Documents/server2.pem ~/location/to/copy/to

或者我必须输入:

scp -i ~/Documents/server1.pem -r root@server1.com:~/location/to/dir -i ~/Documents/server2.pem root@server2.com:~/location/to/copy/to

我只是不确定第二个位置是需要输入主机还是只需要输入位置。 非常感谢您的帮助。

首先,scp 将只接受一个 -i 选项,因此您的 none 个命令将起作用。

接下来,您没有使用 -3 选项。这意味着传输将直接发生在 server1 和 server2 之间,而不通过您的机器。在这种情况下,服务器 2 的证书需要存储在服务器 1 上。

已经为 -3 选项给出了一个解决方案 here. And if server1 can not connect directly to server2, see also here

另一个解决方案是使用两个 ssh 进程,每个进程都有自己的 -i 选项。类似于:

ssh -i ~/Documents/server1.pem root@server1.com 'tar cz -C ~/location/to/dir .' \
| ssh -i ~/Documents/server2.pem root@server2.com 'tar xz -C ~/location/to/copy/to'

备注:

  • 这样,文件会通过您自己的机器,就像 scp-3 选项
  • 您可能需要先创建目标目录(在 tar x 之前添加 mkdir -p 命令)
  • 您可能希望在 tar x 命令中使用 --no-same-owner 以使文件归 root 所有,而不是其原始所有者

创建一个类似 ~/scp_config 的配置文件:

Host src
    HostName server1.com
    User root
    CertificateFile %d/Documents/server1.pem

Host dest
    HostName server2.com
    User root
    CertificateFile %d/Documents/server2.pem

然后运行

scp -3 -F ~/scp_config src:\~/location/to/dir dest:\~/location/to/copy/to