如何使用单个脚本跨 2 个服务器(源 -> 服务器 A - > 服务器 B)传输文件。

如何使用单个脚本跨 2 个服务器(源 -> 服务器 A - > 服务器 B)传输文件。

我有 3 台 Linux 服务器 - 第一个是开发机器(我在其中编译二进制文件),第二个是“jumpbox”,它帮助我连接到“测试床” - 这是我需要复制二进制文件的地方。

现在,我正在做这样的事情:

1)使用 scp -r binary abc@jumpbox:/temp/ 将我的二进制文件从 devmachine 复制到 Jumpbox

2)登录jumpbox并使用scp -r binary abc@testbed:/bin/将二进制文件从jumpbok复制到testbed

有什么方法可以通过一个脚本完成上述两个步骤吗?

我意识到我将被迫将密码保存在文件中才能正常工作,但我对此很满意 - 我始终可以使用加密。

答案1

最简单的选择是执行 ssh 连接通过 pubkey 身份验证无需密码。这意味着您必须在服务器之间共享公钥。

然后你可以在“源”服务器上使用类似的命令:

cat file | ssh user@serverA "ssh user@serverB \"cat > file\""

答案2

您需要使用 ssh 的公钥/私钥设置无密码登录。

然后,假设要复制的文件位于 中dir

source$ tar cf - dir | ssh servera 'ssh serverb "cd dest ; tar xf - " '

在哪里

  • source$你提示吗
  • tar cf - dir将 dir 中的 tar 文件复制到 stdin
  • ssh servera将您记录到 servera
  • cd dest ; tar xf - 从 dest 目录中的标准输入文件中提取。

相关内容