serverBを介してserverCからserverAにファイルを同期する

serverBを介してserverCからserverAにファイルを同期する

コンピュータA、B、Cがあります。各コンピュータでSSHが有効になっており、それを使用できますrsync

  • AはBでSSH経由で接続できます。
  • BはCでSSH経由で接続できます。
  • AはCにSSH経由で接続できません。

BはパブリックSSHアクセス権を持っているため、AはBに接続でき、CはAが属していないVPNにあるため通信できます。

CからAにいくつかのファイルをコピーし、それのcronjobを作成したいと思います。

これを行うための良い方法はありますか?

修正する:

あなたが提案した関連回答に記載されているように、Bを介してCにSSHを介して接続することはできますが、rsyncserverBを介してSSHを介して接続することはできません。

Bがポート22ではなくSSHを受信して​​いるとします。

答え1

これは私にとって効果的です。

rsync -avzhP -e "ssh -p portB -A user1@serverB ssh" user2@serverC:somedir/ localdir/

ちなみに、同様の質問に対する答えを読んだ。

https://stackoverflow.com/a/21787966/399637

答え2

ホストAがsshホストBに接続でき、ホストBがホストCに接続できる場合は、ホストsshAからBを介してCにプロキシするようにsshクライアント構成を設定できます。転送としてrsync使用するプロトコルを指定することもできます()。これら2つを組み合わせることで、タスク内でもBを介してホストAからCに移動できます。ssh-e sshsshrsynccron

答え3

サーバーA、B、Cに22以外のポートがない場合にこのコマンドを使用しました。

rsync -azv -e 'ssh -A -J  UserServerB@AddressB' /file-in-ServerA UserServerC@AddresServerC:/path-ServerC

ただし、サーバーBが22以外のsポートを使用してSSH経由で接続している場合

rsync -azv -e 'ssh -A -J  UserServerB@AddressB:PortB' /file-in-ServerA UserServerC@AddresServerC:/path-ServerC

関連情報