두 리모컨 간의 rsync 파일, "중간"에서만 액세스 가능

두 리모컨 간의 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그러나 일반적인 경우가 목표입니다.
가능합니까? 그 중 하나만요? 어떻게?
이를 달성하려면 M1->M2 액세스 권한이 있어야 합니까? 그렇다면 어떻게 이를 달성할 수 있습니까?

나는 그것에 매우 가까운 것 같습니다.

  1. 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, 저는 비밀번호를 정확하게 입력했습니다.

  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. 두 원격 서버 간에 파일을 동기화하는 방법은 무엇입니까?
  3. SSH 키를 사용하여 역방향 포트 전달을 통해 두 원격 서버 간에 rsync를 실행하려고 합니다.
  4. 명시적인 포트와 다른 사용자 이름을 사용하여 두 원격 장치 간에 파일을 재동기화하는 방법은 무엇입니까?
  5. AWS ec2 - 두 원격 장치 간에 파일을 동기화하는 방법은 무엇입니까?
  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 - 세 컴퓨터 사이에 터널을 설정하는 방법은 무엇입니까?

답변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의 다른 질문에 직접 매핑할 수 있습니다.두 리모컨 간에 파일을 동기화하는 방법은 무엇입니까?, 구현 방법을 묻는 질문

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

관련 정보