2つのリモコン間のrsyncファイル、「中」でのみアクセス可能

2つのリモコン間のrsyncファイル、「中」でのみアクセス可能

編集#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キーペアを使用しています。

  1. M3にはSSHサーバーがないため、M1-> M3、M2-> M3は不可能です。
  2. M2ではVPNを使用できないため、M2-> M1は不可能です。
  3. M1->M2が可能かどうかはわかりません。

user1@M1rsync -> user2@M2(つまり、user1@M1ソースおよびターゲット) を意味user2@M2し、その逆も同様です。特定のケースでは、user1=user2しかし一般的なケースが目標です。
可能ですか? そのうちの1つだけですか? どのように?
これを達成するには、M1-> M2アクセス権が必要ですか? では、どうすればこれを達成できますか?

私はそれに非常に近いようです。

  1. rsync M1->M2を試して、次のことを実行しましたuser3@M3user1@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、私はパスワードを正確に入力しました。

  2. 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を渡す正しい方法を見つける必要があります。そのために...

  3. rsync M2->M1 を試してuser3@M3add を実行します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を接続するか、その逆にすることをお勧めします。
どうすればいいですか?

関連:

  1. 2つのリモコン間でファイルを同期する方法は?
  2. 2つのリモートサーバー間でファイルを同期する方法は?
  3. SSHキーを使用してリバースポート転送を介して2つのリモートサーバー間でrsyncを実行しようとしています。
  4. 明示的なポートと異なるユーザー名を使用して2つのリモートデバイス間でファイルを再同期する方法は?
  5. AWS ec2 - 2つのリモートデバイス間でファイルを同期する方法は?
  6. https://serverfault.com/questions/411552/rsync-remote-to-remote
  7. https://serverfault.com/questions/249421/rsync-from-one-remote-to-another
  8. https://superuser.com/questions/797473/creating-a-connection-Between-3-computers
  9. 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。この接続は、元のコンピュータを介してM1TCP / IPポート50000からマシンのポート22にチャネルを確立します。次に、そのチャンネルを使用してM2に「直接」接続するコマンドを実行します。 (フラグを少し変更しました。元の質問で使用されていたものよりも良いデフォルトです。)M2M3rsyncrsync -avz

関連情報