편집 #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
그러나 일반적인 경우가 목표입니다.
가능합니까?
그 중 하나만요?
어떻게?
이를 달성하려면 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를 연결하거나 그 반대로 할 수 있도록 노력하겠습니다.
어떻게 해야 하나요?
관련된:
- 두 리모컨 간에 파일을 동기화하는 방법은 무엇입니까?
- 두 원격 서버 간에 파일을 동기화하는 방법은 무엇입니까?
- SSH 키를 사용하여 역방향 포트 전달을 통해 두 원격 서버 간에 rsync를 실행하려고 합니다.
- 명시적인 포트와 다른 사용자 이름을 사용하여 두 원격 장치 간에 파일을 재동기화하는 방법은 무엇입니까?
- AWS ec2 - 두 원격 장치 간에 파일을 동기화하는 방법은 무엇입니까?
- 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 - 세 컴퓨터 사이에 터널을 설정하는 방법은 무엇입니까?
답변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
. 이 연결은 원래 컴퓨터를 통해 M1
TCP/IP 포트 50000에서 머신의 포트 22로 채널을 설정합니다 . 그런 다음 해당 채널을 사용하여 M2에 "직접" 연결하는 명령을 실행합니다 . (플래그를 약간 변경했습니다. 원래 질문에 사용된 것보다 더 나은 기본값입니다.)M2
M3
rsync
rsync -avz