serverB를 통해 serverC에서 serverA로 파일 동기화

serverB를 통해 serverC에서 serverA로 파일 동기화

컴퓨터 A, B, C가 있습니다. 각 컴퓨터에는 SSH가 활성화되어 있으며 이를 사용할 수 있습니다 rsync.

  • A는 B로 SSH를 통해 연결할 수 있습니다.
  • B는 C로 SSH를 통해 연결할 수 있습니다.
  • A는 C에 SSH를 통해 연결할 수 없습니다.

B는 공개 SSH 액세스 권한을 갖고 있으므로 A는 B에 연결할 수 있고, C는 A가 속하지 않은 VPN에 있기 때문에 통신할 수 있습니다.

C에서 A로 일부 파일을 복사하고 이에 대한 cronjob을 생성하고 싶습니다.

이를 수행할 수 있는 좋은 방법이 있습니까?

고쳐 쓰다:

귀하가 제안한 관련 답변에 설명된 대로 B를 통해 C로 SSH를 통해 연결할 수 있지만 rsyncserverB를 통해 SSH를 통해 연결할 수는 없습니다.

B가 포트 22가 아닌 SSH를 수신하고 있다고 가정합니다.

답변1

이것은 나에게 효과적입니다.

rsync -avzhP -e "ssh -p portB -A user1@serverB ssh" user2@serverC:somedir/ localdir/

참고로 비슷한 질문에 대한 답변을 읽었습니다.

https://stackoverflow.com/a/21787966/399637

답변2

호스트 A가 ssh호스트 B에 연결할 수 있고 호스트 B가 호스트 C에 연결할 수 있는 경우 ssh호스트 A에서 B를 통해 C로 프록시하도록 ssh클라이언트 구성을 설정할 수 있습니다. 전송으로 rsync사용할 프로토콜을 지정할 수도 있습니다 ( ). 이 두 가지를 결합하면 작업 내에서도 B를 통해 호스트 A에서 C로 이동할 수 있습니다 .ssh-e sshsshrsynccron

답변3

서버 A, B, C에 22 이외의 포트가 없을 때 이 명령을 사용했습니다.

rsync -azv -e 'ssh -A -J  UserServerB@AddressB' /file-in-ServerA UserServerC@AddresServerC:/path-ServerC

그러나 서버 B가 22가 아닌 s 포트를 사용하여 SSH를 통해 연결하는 경우

rsync -azv -e 'ssh -A -J  UserServerB@AddressB:PortB' /file-in-ServerA UserServerC@AddresServerC:/path-ServerC

관련 정보