コンピュータ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を介して接続することはできますが、rsync
serverBを介してSSHを介して接続することはできません。
Bがポート22ではなくSSHを受信しているとします。
答え1
これは私にとって効果的です。
rsync -avzhP -e "ssh -p portB -A user1@serverB ssh" user2@serverC:somedir/ localdir/
ちなみに、同様の質問に対する答えを読んだ。
答え2
ホストAがssh
ホストBに接続でき、ホストBがホストCに接続できる場合は、ホストssh
AからBを介してCにプロキシするようにssh
クライアント構成を設定できます。転送としてrsync
使用するプロトコルを指定することもできます()。これら2つを組み合わせることで、タスク内でもBを介してホストAからCに移動できます。ssh
-e ssh
ssh
rsync
cron
答え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