원격 호스트에서 rsync를 사용하는 방법

원격 호스트에서 rsync를 사용하는 방법

나는 행복한 사용자 rsync -e ssh이며 내 컴퓨터와 원격 호스트 간의 데이터를 동기화하는 데 사용합니다.

rsync -avz -e ssh me@hostA:~/folder ~/folder

이것이 지금까지 필요한 것입니다.

저는 이제 좀 더 복잡한 구성의 Access를 사용하고 있습니다. now 가 ~/folder열려 있지만 hostBhostB컴퓨터에서 직접 액세스할 수 없고 간접적으로만 액세스할 수 있다고 가정해 보겠습니다 hostA.

따라서 hostB.hostAhostB~/folder

rsync이제 내 질문은 내 컴퓨터와 hostB.

불행하게도 이것이 내가 사용해야 하는 구성입니다. 데이터 자체를 일시적으로 저장하는 것은 불가능하다고 가정합니다 hostA.

답변1

구경하다SSH를 통해 다른 컴퓨터에 연결하는 방법

Tunnelb라는 새 항목을 만듭니다 ~/.ssh/config.

Host tunnelb
HostName hostB
User user
ProxyCommand ssh user@hostA nc %h %p

최신 버전의 SSH가 있으면 Proxycommand ssh user@hostA -W %h:%p이를 사용할 수 있습니다. 이는 의존하지 않으므로 선호됩니다.nc

rsync -e ssh tunnelb:~/folder ~/folder이제 에 정의된 항목을 사용하므로 직접 사용할 수 있습니다 ~/.ssh/config.

답변2

변형 1:

먼저, 호스트A에서 SSH를 영구적으로 시작하고 다른 터미널에서 로컬 포트 ​​전달을 수행합니다. 예를 들어:

ssh -N -v -L 22022:hostB:22 hostA

그런 다음 ssh를 사용하여 rsync를 localhost:22022.

Host hostB
HostName localhost
Port 22022

변형 2:

다음을 포함하는 스크립트 -e ssh로 바꾸십시오 .-e

ssh hostA 'ssh hostB' "$@"

해보지는 않아서 자세한 내용은 따로 설명하겠습니다.

관련 정보