中間ホスト経由のRsyncファイル


22

現在LANから離れているため、ラップトップのバックアップを作成する必要があります。サーバー上にラップトップのコピーが多少あり、通常はrsyncを使用してラップトップをバックアップします。今、私はそれをしたいが、私のLANの外に。

要するに、B経由でAからCにデータを送信します。ここで、Aは私のラップトップ、Bは私のルーター、Cは私のサーバーです。

私はこのコマンドを見つけました:A$ scp -oProxyCommand="ssh B nc %h %p" thefile C:destination、それはscp経由でファイルを転送するのにうまく機能します-しかし、すでにサーバーにほとんどのデータがあるので、rsyncを使用してデルタのみを同期したいと思います。

私は試してみました:A$ rsync file -e 'ssh B ssh' C、そしてそれはuser:Cのパスワードを与えるように促される限り機能します。ただし、パスワードを入力しても何も起こりません。ルーターはTomato v1.28を実行しており、パスワードなしでCにログオンできるようにssh構成ファイルを使用するようにセットアップできません。

この作品を作る方法についてのアイデアはありますか?


2
ProxyCommand構成ファイルで同じものを使用します。Rsyncがそれを拾うはずです。
Jakuje

回答:


30

この質問は基本的に他の場所で回答されています。ここにはscpの場合rsyncの場合が含まれます。後者には私の回答が含まれていますが、回答は受け入れられなかったため、ここで繰り返します。

あなたが述べたように、あなたが使用することができますrsync-e | --rshオプションを、もう少し複雑になるだろう:

rsync -azv -e 'ssh -o "ProxyCommand ssh -A PROXYHOST -W %h:%p"' foo/ dest:./foo/

または、バージョンがssh十分に新しい場合(OpenSSH> = v7.3)、-JProxyJump)オプションを使用できます

rsync -azv -e 'ssh -A -J USER@PROXYHOST:PORT' foo/ dest:./foo/

私が使用していることに注意-A(エージェント転送を)いますが、キーを使用しない場合、それはまた、パスワード認証で動作するはず、と、もちろん、あなたが交換することができるproxyBしてdestCあなたの例では。

偶然新しいsshバージョン(> = 5.3、IIRC)がない場合、次netcat-Wオプションの代わりに使用できますssh

rsync -azv -e 'ssh -o "ProxyCommand ssh -A PROXYHOST nc %h %p"' foo/ dest:./foo/

最後に、すでにコメントで述べたようProxyCommandに、$HOME/.ssh/configファイルにを入れることができるので、このような複雑なコマンドラインを用意する必要はありません。具体的には、次のようなものを追加します。

Host C
  ProxyCommand ssh -A PROXYHOST -p 22 -W %h:%p

または、ProxyJumpOpenSSH> = v 7.3の場合:

Host C
  ProxyJump PROXYHOST

その後、あなたはちょうどすることができるはずです:

rsync -azv foo/ C:./foo/
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.