web-dev-qa-db-ja.com

sshトンネルを介したrsync

通常、別のシステムを経由して接続するクラスターノードにrsyncします。

最初に接続するとします

  ssh user@bridge 

そしてそこから

  ssh user@clusternode

次に、ワークステーションからclusternodeにrsyncを行います。私は次のことを行います:

  • Sshトンネルを開きます

    ssh -L8000:clusternode:8000 user@bridge
    
  • ワークステーションからclusternodeにrsyncします

    rsync -e "ssh -p8000" source user@localhost:destination
    

そして、それは動作しません、私は得る

 ssh_exchange_identification: Connection closed by remote Host

なぜ機能しないのですか?私は何をしなければなりませんか?


私はここで多くの情報を見つけました:

http://toddharris.net/blog/2005/10/23/rsyncing-through-an-ssh-tunnel/

私の問題はブリッジと宛先の間の2番目の認証であることを理解したいと思うので、あまりエレガントではない方法2に変更しましたが、動作します。方法3を試したいのですが、rsyncデーモンを構成する方法がわかりません

38
simona

これが私のために働いたものです。

バックグラウンドでコマンドを実行して、リモートホストにトンネルします。

 ssh -N -L 2222:remote.example.com:22 bridge.example.com&

次に、このようにlocalhostにrsyncします:

rsync -auve "ssh -p 2222" . me@localhost:/some/path
30

このワンライナーをお試しください:

rsync -av -e "ssh -A root@proxy ssh" ./src root@target:/dst
61
skroll

Clusternodeのポート22に接続する必要があるため、トンネルは次のようになります。

ssh -L localhost:8000:clusternode:22 user@bridge
2
radim