현재 LAN에서 멀리 떨어져 있으며 랩톱을 백업해야합니다. 서버에 랩톱의 최신 사본이 있으며 보통 rsync를 사용하여 랩톱을 백업합니다. 이제는 LAN 외부에서 그렇게하고 싶습니다.
간단히 말해서 B를 통해 A에서 C로 데이터를 보내고 싶습니다. 여기서 A는 내 랩톱, B는 내 라우터, C는 서버입니다.
나는 A$ scp -oProxyCommand="ssh B nc %h %p" thefile C:destination
scp를 통해 파일을 전송하는 데 잘 작동하는 명령을 찾았 지만 이미 서버에 대부분의 데이터가 있으므로 rsync를 사용하여 델타를 동기화하고 싶습니다.
나는 시도했다 : A$ rsync file -e 'ssh B ssh' C
, 그것은 user : C에 대한 암호를 제공하라는 메시지가 표시되는 한 작동합니다. 그러나 암호를 입력해도 아무런 변화가 없습니다. 라우터는 Tomato v1.28을 실행 중이며 ssh 구성 파일을 사용하여 C w / oa 암호로 로그온 할 수 있도록 설정할 수 없습니다.
이 작업을 수행하는 방법에 대한 아이디어가 있습니까?
답변
이 질문은 본질적으로 scp 및 rsync 여기를 포함하여 다른 곳에서 답변됩니다 . 후자는 내 대답을 포함하지만 아무런 대답도 받아들이지 않았으므로 여기에서 반복하겠습니다.
언급했듯이 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
물론, 당신이 바꿀 수 있습니다 (에이전트 포워딩) 그러나 또한 암호 인증에 대한 작업은 당신이 키를 사용하지 않는해야하는 경우와 proxy
와 B
와 dest
와 C
당신의 예이다.
우연히 충분한 새 ssh
버전 (> = 5.3, IIRC)이없는 경우 다음 옵션 netcat
대신 사용할 수 있습니다 .-W
ssh
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
또는 ProxyJump
OpenSSH> = v 7.3에 사용 :
Host C
ProxyJump PROXYHOST
그런 다음 다음을 수행 할 수 있어야합니다.
rsync -azv foo/ C:./foo/