リモートホストでrsyncを使用する方法

リモートホストでrsyncを使用する方法

私は幸せなユーザーでrsync -e sshあり、私のコンピュータとリモートホスト間のデータを同期するために使用します。

rsync -avz -e ssh me@hostA:~/folder ~/folder

これがこれまでに必要なものです。

私は今、より複雑な構成のAccessを使用しています。 nowが~/folder開いていますが、hostB自分のhostBコンピュータから直接アクセスできず、間接的にしかアクセスできないとしますhostA

したがって、hostBhostAhostB~/folder

rsync今私の質問は私のコンピュータとhostB

残念ながら、これは私が使用する必要がある設定です。データ自体を一時的に保存することは不可能であると仮定しますhostA

答え1

見るSSH経由で他のコンピュータに接続する方法

Tunnelbという新しいエントリを作成します~/.ssh/config

Host tunnelb
HostName hostB
User user
ProxyCommand ssh user@hostA nc %h %p

最新バージョンのSSHがある場合はProxycommand ssh user@hostA -W %h:%pそれを使用できます。これは依存しないので好まれる。nc

rsync -e ssh tunnelb:~/folder ~/folderこれで定義された項目を使用するので、直接使用できます~/.ssh/config

答え2

変形1:

まず、ホストAでSSHを永久に起動し、他の端末でローカルポートの転送を実行します。たとえば、

ssh -N -v -L 22022:hostB:22 hostA

次に、sshを使用してrsyncをlocalhost:22022

Host hostB
HostName localhost
Port 22022

変形2:

以下を含むスクリプト-e sshに置き換えます。-e

ssh hostA 'ssh hostB' "$@"

やってみませんので詳細は別途説明いたします。

関連情報