나는 행복한 사용자 rsync -e ssh
이며 내 컴퓨터와 원격 호스트 간의 데이터를 동기화하는 데 사용합니다.
rsync -avz -e ssh me@hostA:~/folder ~/folder
이것이 지금까지 필요한 것입니다.
저는 이제 좀 더 복잡한 구성의 Access를 사용하고 있습니다. now 가 ~/folder
열려 있지만 hostB
내 hostB
컴퓨터에서 직접 액세스할 수 없고 간접적으로만 액세스할 수 있다고 가정해 보겠습니다 hostA
.
따라서 hostB
.hostA
hostB
~/folder
rsync
이제 내 질문은 내 컴퓨터와 hostB
.
불행하게도 이것이 내가 사용해야 하는 구성입니다. 데이터 자체를 일시적으로 저장하는 것은 불가능하다고 가정합니다 hostA
.
답변1
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' "$@"
해보지는 않아서 자세한 내용은 따로 설명하겠습니다.