나는 의 행복한 사용자 rsync -e ssh
이며 이를 사용하여 내 컴퓨터와 원격 호스트 간의 데이터를 동기화하는 데 사용합니다.
rsync -avz -e ssh me@hostA:~/folder ~/folder
그리고 이것은 지금까지 내가 필요로 했던 것을 해냈습니다.
지금은 액세스가 좀 더 복잡한 구성으로 작업하고 있습니다. now 가 ~/folder
켜져 있지만 hostB
내 hostB
컴퓨터에서 직접 액세스할 수 없고 를 통해 간접적으로만 액세스할 수 있다고 가정합니다 hostA
.
따라서 hostB
. 먼저 ssh로 연결 hostA
한 다음 원격 호스트에서 hostB
내 파일을 볼 수 있습니다 .~/folder
이제 내 질문은 rsync
내 컴퓨터와 hostB
.
불행하게도 이것이 제가 작업해야 하는 구성입니다. 데이터 자체를 일시적으로 저장할 가능성은 없다고 가정합니다 hostA
.
답변1
보세요SSH를 사용하여 다른 PC를 통해 PC에 어떻게 연결합니까?
~/.ssh/config
Tunnelb라는 이름으로 새 항목을 만듭니다 .
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' "$@"
시도해보지 않았으므로 몇 가지 세부 사항을 추가로 설명하겠습니다.