2016-07-27 8 views
0

リモートホスト間でrsyncを実行する必要があります(後の理由)。これはrsyncでサポートされていません(マニュアルページを参照)。しかし、私はsshトンネルを使って可能でなければならないと思います。これまでのところ動作させることができず、私は何か間違っていると思う。次のスニペットを見て:2つのリモート間のRsync

ssh -R localhost:50000:remotesource:22 [email protected] -f -N 
sleep 5 #To wait for the tunnel to establish 
ssh [email protected] rsync -e "ssh -p 50000" --progress --append-verify [email protected]:~/sourcefiles ~/destdir' 

これは基本的にrsyncの内部SSHの認証中にハングアップします。ちょうどそれをテストするために、私はremotedestinationに接続し、トンネル経由でリモートソースするためにsshしようとしたと働いた!ここで忘れていることはrsyncのやり方は何ですか?

なぜ私はこれをしたいですか?一般的な好奇心にもかかわらず、事は、リモートソースは私がデータをプッシュできないだけのコンピュータであり、リモートフェネーションは唯一の共有アカウントを持つということです。接続の問題が頻繁に発生するため、エラーが発生した場合にrsyncを再起動するスクリプトを作成したかったのです。このためには、鍵ファイル(sshpassもインストールされていない)を介して認証する必要があります。しかし、私は確かに私の秘密鍵を共有アカウントのホームディレクトリに保存しません。したがって、私はローカルPCを介して認証が必要です。

誰かが私のエラーを指摘してくれることを願っています。私はそれを見ません:-)ありがとう!

答えて

1

あなたはここで結ばれていると思います!

ポート22へのポートの作成が役立つのは、ファイアウォールを回るときだけです。認証を回避するのに役立つわけではありません。いずれにせよ、あなたのトンネルは "localpc"上で実行されているプロセスからの接続しか受け付けないので、 "remotedestination"で走っているあなたのrsyncはそれを使うことができません。

"remotedestination"で共有アカウントに資格情報を漏らさず、対話的なパスワード入力が不可能な場合は、少しばかり複雑です。 authorized_keysによって制限されたキーを使用することもできますが、それでも完全に安全ではありません。 ssh -Aを使ってssh-agent接続を "remotedestination"に転送することができますが、同じユーザーアクセス権を持つ盗聴者もそのソケットを使うことができます(実際のハッカーに遭遇しているスパイではない場合、この方法は少なくともかなり秘密です) 。

恐らく最も安全な方法は、その側でssh -Aエージェント転送を使用して、 "remotesource"からの転送を開始することです。

また、データが大きくないか、増分更新が重要でない場合は、scpを試すことができます。これはリモートソースと宛先の両方を扱うことができ、可能であれば直接ソースから宛先へ直接データを移動します。欠点は、常にすべてのデータをコピーしようとすることです。

+0

私はそれが残念です。私はそれについて考えてみましょう。データの量に関して、私たちは数TBを話しています。そのため、接続が失われた後にrsyncを再開する必要があります。 – Alex

+0

私の個人的な解決策は、入力されたパスワードを入力するためのスクリプトを書くことです。 – ams

+0

sshpassはインストールされていませんので、どうすればよいですか? – Alex

関連する問題