在每台远程计算机中使用命令进行多个 ssh 连接

在每台远程计算机中使用命令进行多个 ssh 连接

我正在尝试连接到 3 台不同的远程计算机,在这些计算机之间复制文件,然后留在最终的远程计算机中执行一些任务。我正在尝试创建一个 bash 脚本来帮助我自动化此过程。这就是我想做的事

fname='file to be copied across these remote machines' 
rmt1='remote machine1'
mt2='remote machine2'
rmt3='remote machine3'

#copy file from local to rmt1
scp -r  $fname  $rmt1
#log into rmt1
ssh -Y $rmt1
#from rmt1, copy file from rmt1 to rmt2
scp -r  $fname  $rmt2
#from rmt1 log into rmt2
ssh -Y $rmt2
#from rmt2 copy file from rmt2 to rmt3
scp -r  $fname  $rmt3
#from rmt2 log into rmt3
ssh -Y $rmt3
Then finally stay in rmt3 where I can do other things.

我需要一个 bash 脚本来帮助我自动执行此过程,这样我就不必每次需要输入太多内容。任何帮助将不胜感激。笔记 我已经使用启用了公钥/私钥ssh 密钥生成器所以这些都不需要我输入密码

非常感谢您的帮助

答案1

假设本地主机上的一个私钥将允许登录所有三个远程主机以及 OpenSSH 的现代版本,我会这样做:

#!/bin/sh
fname='file to be copied across these remote machines' 
rmt1='remote machine1'
rmt2='remote machine2'
rmt3='remote machine3'

scp -J "$rmt1,$rmt2" "$fname" "$rmt3":/target/path/
ssh -Y -J "$rmt1,$rmt2" "$rmt3"

相关内容