![在每台远程计算机中使用命令进行多个 ssh 连接](https://linux22.com/image/209365/%E5%9C%A8%E6%AF%8F%E5%8F%B0%E8%BF%9C%E7%A8%8B%E8%AE%A1%E7%AE%97%E6%9C%BA%E4%B8%AD%E4%BD%BF%E7%94%A8%E5%91%BD%E4%BB%A4%E8%BF%9B%E8%A1%8C%E5%A4%9A%E4%B8%AA%20ssh%20%E8%BF%9E%E6%8E%A5.png)
我正在尝试连接到 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"