보안되지 않은 네트워크를 통해 서버간에 보안 재 동기화를 수행하는 방법 chroot 할 수있는 몇 가지 멋진

기본적으로 내가 묻는 것은 ssh 내부에서 rsync를 래핑하는 수단을 가진 사람이 있다는 것입니다.

OpenSSH v4.9 이상을 사용하면 sftp에는 들어오는 연결을 chroot 할 수있는 몇 가지 멋진 옵션이 있습니다. 이것은 내가 볼 수있는 해결책이지만 RHEL에 갇혀 있으며 RHEL4 또는 RHEL5는 해당 버전에 해당하지 않습니다. ssh.

내 현재 솔루션은 클라이언트 사용자의 키를 사용하여 이와 같은 것을 서버 측에 추가하는 것입니다 …

server % cat ~ / .ssh / authorized_keys
command = "cd / srv / rsync / etl && tar --exclude './lost+found'-pcf-./"ssh-rsa ...

클라이언트는 한 가지로만 제한됩니다.

client % ssh -T -i $ {HOME} /. ssh / id_rsa oracle@database.com> sensative.tar

이렇게하면 클라이언트뿐만 아니라 서버와의 연결도 보호되지만 모든 파일을 반복해서 검색하므로 비효율적입니다.

rsync를 사용하여 비슷한 (또는 더 나은) 작업을 수행 한 후입니다.



답변

Rsync는 ssh를 전송으로 사용하는 것을 지원합니다

rsync -az /path/to/source username@host:/path/to/destination

일부 이전 버전의 rsync에서는 ssh를 명시 적으로 지정해야합니다.

rsync -aze ssh /path/to/source host:/path/to/destination

rsync를 사용하는 대안은 BC Pierce ‘s Unison 인데, rsync와 비슷한 기능을 가지고 있지만 델타를 계산하기 위해 파일 시스템을 걸을 필요가 없도록 양쪽 끝에서 로컬 인덱스를 유지합니다.


답변

좋아, 마침내 이것을 알아 냈지만 해결책은 내가 기대했던 것만 큼 우아하지 않습니다.

서버 쪽에서 관련 사용자를 위해 authorized_keys 파일에 다음을 추가해야합니다.

no-pty, command="exit"

클라이언트에서 다음과 같이 터널을 만들 수 있습니다.

ssh -l username -fNTL 8073:server:873

터널이 설정되면 이중 콜론 구문을 사용할 수없는 일반적인 방법에 따라 localhost로 rsync 할 수 있습니다.

선택하는 로컬 호스트 포트 번호 (8073)는 단지 당신이 rsync는해야 무엇을 기억 분명히 완전히 선택 사항

rsync --port=8073 -a user@localhost::mySecureStore /srv/some/place/