我正在尝试连接到 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"