원격 원격 호스트와 함께 rsync를 사용하는 방법

원격 원격 호스트와 함께 rsync를 사용하는 방법

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

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

그리고 이것은 지금까지 내가 필요로 했던 것을 해냈습니다.

지금은 액세스가 좀 더 복잡한 구성으로 작업하고 있습니다. now 가 ~/folder켜져 있지만 hostBhostB컴퓨터에서 직접 액세스할 수 없고 를 통해 간접적으로만 액세스할 수 있다고 가정합니다 hostA.

따라서 hostB. 먼저 ssh로 연결 hostA한 다음 원격 호스트에서 hostB내 파일을 볼 수 있습니다 .~/folder

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

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

답변1

보세요SSH를 사용하여 다른 PC를 통해 PC에 어떻게 연결합니까?

~/.ssh/configTunnelb라는 이름으로 새 항목을 만듭니다 .

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. 한 가지 변형은 ~/.ssh/config에 쓰는 것입니다.

Host hostB
HostName localhost
Port 22022

변종 2:

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

ssh hostA 'ssh hostB' "$@"

시도해보지 않았으므로 몇 가지 세부 사항을 추가로 설명하겠습니다.

관련 정보