중간 호스트를 통한 Rsync 파일


22

현재 LAN에서 멀리 떨어져 있으며 랩톱을 백업해야합니다. 서버에 랩톱의 최신 사본이 있으며 보통 rsync를 사용하여 랩톱을 백업합니다. 이제는 LAN 외부에서 그렇게하고 싶습니다.

간단히 말해서 B를 통해 A에서 C로 데이터를 보내고 싶습니다. 여기서 A는 내 랩톱, B는 내 라우터, C는 서버입니다.

나는 A$ scp -oProxyCommand="ssh B nc %h %p" thefile C:destinationscp를 통해 파일을 전송하는 데 잘 작동하는 명령을 찾았 지만 이미 서버에 대부분의 데이터가 있으므로 rsync를 사용하여 델타를 동기화하고 싶습니다.

나는 시도했다 : A$ rsync file -e 'ssh B ssh' C, 그것은 user : C에 대한 암호를 제공하라는 메시지가 표시되는 한 작동합니다. 그러나 암호를 입력해도 아무런 변화가 없습니다. 라우터는 Tomato v1.28을 실행 중이며 ssh 구성 파일을 사용하여 C w / oa 암호로 로그온 할 수 있도록 설정할 수 없습니다.

이 작업을 수행하는 방법에 대한 아이디어가 있습니까?


2
ProxyCommand구성 파일에서 동일하게 사용 하십시오. Rsync가 이것을 선택해야합니다.
Jakuje

답변:


30

이 질문은 본질적으로 scprsync 여기를 포함하여 다른 곳에서 답변됩니다 . 후자는 내 대답을 포함하지만 아무런 대답도 받아들이지 않았으므로 여기에서 반복하겠습니다.

언급했듯이 rsync-e | --rsh옵션을 사용할 수는 있지만 조금 더 복잡합니다.

rsync -azv -e 'ssh -o "ProxyCommand ssh -A PROXYHOST -W %h:%p"' foo/ dest:./foo/

또는 버전이 ssh충분히 새 버전 인 경우 (OpenSSH> = v7.3) -J( ProxyJump) 옵션을 사용할 수 있습니다

rsync -azv -e 'ssh -A -J USER@PROXYHOST:PORT' foo/ dest:./foo/

내가 사용하고 있습니다 -A물론, 당신이 바꿀 수 있습니다 (에이전트 포워딩) 그러나 또한 암호 인증에 대한 작업은 당신이 키를 사용하지 않는해야하는 경우와 proxyBdestC당신의 예이다.

우연히 충분한 새 ssh버전 (> = 5.3, IIRC)이없는 경우 다음 옵션 netcat대신 사용할 수 있습니다 .-Wssh

rsync -azv -e 'ssh -o "ProxyCommand ssh -A PROXYHOST nc %h %p"' foo/ dest:./foo/

이미 댓글에서 언급 한 바와 같이 마지막으로, 당신은 넣을 수 있습니다 ProxyCommand당신에 $HOME/.ssh/config당신은 그런 복잡한 명령 행을하지 않아도 파일. 구체적으로 다음과 같이 추가하십시오.

Host C
  ProxyCommand ssh -A PROXYHOST -p 22 -W %h:%p

또는 ProxyJumpOpenSSH> = v 7.3에 사용 :

Host C
  ProxyJump PROXYHOST

그런 다음 다음을 수행 할 수 있어야합니다.

rsync -azv foo/ C:./foo/
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.