在一个远程系统上进行间接rsync

时间:2015-03-05 14:26:13

标签: ubuntu ssh server rsync

我正在大学开展一个项目,因此必须使用位于大学建筑内的测试台服务器。问题是,当我在"右边"时,我只能连接到那些服务器。大学网络。即使我用我的笔记本使用大学WLAN,我也无法直接连接到测试台。

唯一的可能性是首先连接到正确子网中的计算机(称之为#34; Gate")。我可以通过ssh(经过测试,它可以工作)甚至从家用电脑上做到这一点。从这台机器我可以连接到所有测试台机器(测试并且可以工作)

现在我想在我的笔记本电脑上开发我的代码并将其分发到所有机器上(3x测试台服务器)并在我分发它之后立即启动它。我想过使用rsync,当我不需要进行"间接" rsync(首先将其同步到门上的目录,然后rsync到所有测试台服务器)

我手动操作时效果很好。但我想在shell脚本中执行此操作。它应该尽可能舒适,因为我必须多次更改我的代码并分发以进行测试。

所有机器都运行ubuntu,除了运行xubuntu的门(我认为不应该是一个问题)

我的第一次尝试就是这个

rsync -ra -e "ssh -p 24" src me@host.of.my.uni.edu:Schreibtisch/_rsync_tmp/
ssh -T me@host.of.my.uni.edu -p 24 << EOF 
    cd ~/Schreibtisch/_rsync_tmp; 
    echo "sync to tb14";
    rsync -ra src stack@tb14:me/;
    echo "sync to tb15";
    rsync -ra src stack@tb15:me/;
    echo "sync to tb16";
    rsync -ra src stack@tb16:me/;
EOF

但由于某种原因,我收到了错误消息

  

同步到tb14

     

许可被拒绝,请再试一次。

     

许可被拒绝,请再试一次。

     

权限被拒绝(公钥,密码)。

     

rsync:连接意外关闭(到目前为止收到0个字节)[sender]

     

rsync错误:io.c上的无法解释的错误(代码255)(226)[sender = 3.1.0]

我不知道为什么我得到了'#34;许可被拒绝&#34;。它甚至没有问我关于ssh密钥的密码。当我登录到门然后从那里执行rsync时,它按预期工作。

有人有想法吗? :)有没有更简单的方法来rsync到一个不能直接访问的系统? (但通过另一个系统)

编辑:

这似乎有效:

rsync -ra -e "ssh -p 24" src me@host.of.my.uni.edu:Schreibtisch/_rsync_tmp/
ssh -t -t me@host.of.my.uni.edu -p 24 'cd ~/Schreibtisch/_rsync_tmp; 
echo "sync to tb14";
rsync -ra src stack@tb14:me/;
echo "sync to tb15";
rsync -ra src stack@tb15:me/;
echo "sync to tb16";
rsync -ra src stack@tb16:me/;'

但现在我必须为每个tb *主机输入密码。

我尝试过ssh-add但是收到了这条消息

  

无法打开与身份验证代理的连接。

我该怎么办?

1 个答案:

答案 0 :(得分:0)

我找到了解决方案!

rsync -ra -e "ssh -p 24" src me@host.of.my.uni.edu:Schreibtisch/_rsync_tmp/
ssh -t -t me@host.of.my.uni.edu -p 24 'cd ~/Schreibtisch/_rsync_tmp; 
eval $(ssh-agent);
ssh-add;
echo "sync to tb14";
rsync -ra src stack@tb14:me/;
echo "sync to tb15";
rsync -ra src stack@tb15:me/;
echo "sync to tb16";
rsync -ra src stack@tb16:me/;'

这就像我想要的那样:)唯一的问题是每次都会再次启动ssh-agent而我必须输入PW。但优于3x:)