編集#1
roaimaの答えに基づいて試しました(user1
= hereを使用user2
)。
[user3@M3]$ ssh -R 50000:M2:22 user1@M1 rsync -e "ssh -p 50000" -avz /absolute_path1/ user2@localhost:/absolute_path2/
Permission denied, please try again.
Permission denied, please try again.
user2@localhost: Permission denied (publickey,password).
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: unexplained error (code 255) at io.c(235) [sender=3.1.3]
キーペアに問題がある可能性があります。 6つの公開鍵と秘密鍵を設定できます(M3-> M1など)。
次のいずれかのコマンドを実行するために必要なものは何ですか?
どのペアが他のペアと同じでなければなりませんか?
M1(リモート)、M2(家)、M3(家、同じルータの背後にある)の3つのコンピュータがあります。可能なSSH接続(クライアント - >サーバー)は、M3 - > M1(VPNを介してのみ)、M3 - > M2です。どちらの場合も、SSHキーペアを使用しています。
- M3にはSSHサーバーがないため、M1-> M3、M2-> M3は不可能です。
- M2ではVPNを使用できないため、M2-> M1は不可能です。
- M1->M2が可能かどうかはわかりません。
user1@M1
rsync -> user2@M2
(つまり、user1@M1
ソースおよびターゲット) を意味user2@M2
し、その逆も同様です。特定のケースでは、user1=user2
しかし一般的なケースが目標です。
可能ですか?
そのうちの1つだけですか?
どのように?
これを達成するには、M1-> M2アクセス権が必要ですか?
では、どうすればこれを達成できますか?
私はそれに非常に近いようです。
rsync M1->M2を試して、次のことを実行しました
user3@M3
(user1@M3
またはなしuser2@M3
):[user3@M3]$ ssh -R localhost:50000:<M2 ip>:22 <M1 ip> 'rsync -e "ssh -p 50000" --perms -vur --dry-run <M1 dir> localhost:<M2 dir>' Enter passphrase for key '<user3 $HOME>/.ssh/id_rsa': Connection closed by <M1 ip> port 22
user3
ちなみにキーペアのパスワードは(しかないので)M3エージェントが聞いてみましたしM3
、私はパスワードを正確に入力しました。rsync M2->M1 を試みると、次から実行されます
user3@M3
。[user3@M3]$ ssh -R localhost:50000:<M1 ip>:22 <M2 ip> 'rsync -e "ssh -p 50000" --perms -vur --dry-run <M2 dir> localhost:<M1 dir>' Enter passphrase for key '<user2 $HOME>/.ssh/id_rsa': <user3>@<M2 ip>'s password: Permission denied, please try again. ...
user3はM2には存在せず、決して成功しません。 user1を渡す正しい方法を見つける必要があります。そのために...
rsync M2->M1 を試して
user3@M3
add を実行しますuser2
。[user3@M3]$ ssh -R localhost:50000:<M1 ip>:22 <user2>@<M2 ip> 'rsync -e "ssh -p 50000" --perms -vur --dry-run <M2 dir> localhost:<M1 dir>' Host key verification failed. rsync: connection unexpectedly closed (0 bytes received so far) [sender] rsync error: unexplained error (code 255) at io.c(235) [sender=3.1.3]
user1
代わりに使用するか、user2
その逆を使用してもここでは同じであるため、問題は解決されません。
どのように動作するかを理解するのに役立つ場合は、まずM1-> M2にSSHを接続するか、その逆にすることをお勧めします。
どうすればいいですか?
関連:
- 2つのリモコン間でファイルを同期する方法は?
- 2つのリモートサーバー間でファイルを同期する方法は?
- SSHキーを使用してリバースポート転送を介して2つのリモートサーバー間でrsyncを実行しようとしています。
- 明示的なポートと異なるユーザー名を使用して2つのリモートデバイス間でファイルを再同期する方法は?
- AWS ec2 - 2つのリモートデバイス間でファイルを同期する方法は?
- https://serverfault.com/questions/411552/rsync-remote-to-remote
- https://serverfault.com/questions/249421/rsync-from-one-remote-to-another
- https://superuser.com/questions/797473/creating-a-connection-Between-3-computers
- SSH - 3台のコンピュータ間にトンネルを設定するには?
答え1
M3にはSSHサーバーがないため、M3-> M1、M3 -> M2は不可能です。
まあ?接続を開始するのはクライアントなので、通常、この関係をクライアント - >サーバーとして作成します。
中間にサーバーがない場合は、M3でリモートsrcとリモートターゲットを使用して中間でrsyncを実行することを試す必要があります(正しいですか?)。残念ながら、rsyncはリモートシャットダウンを処理できません。ただし、M3で両端にトンネルを設定し、もう一方の端でrsyncをトンネルとして指定できます。
userm3@m3 $ ssh -L 2222:m2:22 userm2@m2
その後、m3を介してm1からm2にアクセスできます。
userm1@m1 $ ssh -p 2222 userm2@m3
(ただし、認証キーとホスト固有のキーペアはこれにより難読化されます。)
答え2
骨を選ぶ
3台の機械
- M1、リモート、ユーザー1
- M2、ホームLAN、ユーザー2
- M3、ホームLAN、ユーザー3
つながる
- M3はM1に達することができます。
- M3はM2に達することができます。
M1からM2にデータを転送したいので、その逆に転送したいと思います。
M2もホームLANにありますが、M3に到達できないとします。 M1とM2の間でデータを転送するためにそれを使用したいので、両方のシステムrsync
にすでにインストールされているとします。
明らかな試みはM2から来ますが、rsync user1@M1: user2@M2:
これは不可能です(rsync
現在は他の長距離ターゲットのみを処理できます)。
これで、StackExchangeの他の質問に直接マッピングできます。2つのリモコン間でファイルを同期する方法は?、実装方法を尋ねる質問
rsync -vuar host1:/var/www host2:/var/www
私の答えこのソリューションが利用可能であると仮定すると、次のようになります。
ssh -R localhost:50000:host2:22 host1 'rsync -e "ssh -p 50000" -vuar /var/www localhost:/var/www'
host1
これM1
はとを置き換えてhost2
シーンに再マッピングできますM2
。 M3(両方のリモートシステムにアクセスできるシステム)で、次のコマンドを実行します。
ssh -R localhost:50000:M2:22 user1@M1 rsync -e "ssh -p 50000" -avz /source/path/on/M1/ user2@localhost:/target/path/on/M2
ssh
からM3
まで接続しますuser1@M1
。この接続は、元のコンピュータを介してM1
TCP / IPポート50000からマシンのポート22にチャネルを確立します。次に、そのチャンネルを使用してM2に「直接」接続するコマンドを実行します。 (フラグを少し変更しました。元の質問で使用されていたものよりも良いデフォルトです。)M2
M3
rsync
rsync -avz