특정 사용자와 서버간에 rsync를 수행 할 수 없습니다. 있습니다. rsync -a /home/user/sendIt.txt user1@some.host:/home/user1/

나는 두 개의 리눅스 머신을 가지고 있는데 그들 사이에 ‘rsync’를 사용하여 파일을 동기화하려고하고있다.

클라이언트 컴퓨터에서 다음을 사용하여 키를 생성했습니다.

ssh-keygen -t rsa

그런 다음 공개 키를 /home/user1/.ssh/authorized_keys/home/user2/.ssh/authorized_keys 파일.

다음 명령을 사용하여 user1에 파일을 rsync 할 수 있습니다.

rsync -a /home/user/sendIt.txt user1@some.host:/home/user1/

그러나 rsync를 사용하여 두 번째 사용자에게 파일을 동기화하려고 할 때 :

rsync -a /home/user/sendIt.txt user2@some.host:/home/user2/

이 오류가 나타납니다.

protocol version mismatch -- is your shell clean?
(see the rsync man page for an explanation)
rsync error: protocol incompatibility (code 2) at compat.c(171) [sender=3.0.6]

한 사용자에게 동기화 할 수 있지만 다른 사용자와 동기화 할 수없는 이유는 무엇입니까? 두 번째 사용자는 SFTP 사용자로만 사용하도록 고안되었으며 그는 자신의 홈 디렉토리로 수감되어 있습니다.

미래에 그것을 고치고 피하는 방법에 대한 생각?
도움이된다면 고맙겠습니다. 감사합니다.



답변

user2에 대한 액세스를 SFTP로만 제한했습니다. 그러므로 rsync 허용되지 않습니다.

이 문제를 해결하려면 SFTP에 대한 제한을 실행 취소해야합니다. sshd_config.

대신 – 오직 허용 rsync – 실행할 명령이 있는지 검사하는 스크립트를 작성할 수 있습니다. rsync 설정하다 ForceCommand 당신의이 스크립트에 sshd_config.

또한보십시오 이 serverfault.com 질문 / 답변 .


답변

@sborsky가 이전에 언급했듯이, rsync 서버 구성이 SFTP로 제한되어 있기 때문입니다. 그러나 당신은 사용할 수 있어야합니다. sshfs 로컬로 원격 디렉토리를 마운트하고 rsync 그 마운트 된 디렉토리.


답변

문제 해결됨.

처음에 나는 ForceCommand 접근하지만 그것은 저를 위해 일하지 않았습니다.
내가 궁극적으로 할 일은 / user2에 바인딩 된 디렉토리 user2 안에 디렉토리를 만드는 것입니다. 이 디렉토리는 user1이 소유하고 있으며 파일을 rsync 할 수 있습니다.

프로세스는 다음과 같습니다.
user2는 다음을 사용하여 jailed / chrooted되었습니다.

Match Group sftponly
        ChrootDirectory /var/ftp
        ForceCommand internal-sftp
        AllowTcpForwarding no

내부 /etc/ssh/sshd_config.

이 디렉토리는 다음을 사용하여 그의 홈 디렉토리에 바인드되었습니다.

mount --bind /var/ftp /home/user2/ftp

그런 다음 내부 /var/ftp/ 내가 그랬어 :

mkdir tempDir
chown -R user1:user1 tempDir

파일이 해당 디렉토리에 동기화되면 자동으로 user2 jail 디렉토리에 나타나고 읽을 수 있습니다.


답변