특정 사용자와 서버간에 rsync를 수행 할 수 없습니다.


1

나는 두 개의 리눅스 머신을 가지고 있는데 그들 사이에 '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의 rsync 버전을 확인하십시오.
Ipor Sircer

1
검사 서버 오류에 대한 대답 : "문제가 발생할 수 있습니다. .bashrc 원격 서버의 터미널에 아무 것도 출력하지 않습니다. Rsync는이를 기대하지 않을 수 있으며 결과적으로 문제가 발생할 수 있습니다. 텍스트를 출력하는 .bashrc의 명령을 제거하거나 출력을 파이핑하여이 문제를 해결할 수 있습니다. /dev/null. "
JakeGould

@IporSircer user2의 버전이 user1의 버전과 다른 이유는 무엇입니까? 둘 다 같은 기계에 있습니다. @ JakeGould 어디입니까? .bashrc 파일이 있습니까?
Dany Lavrov

@DanyLavrov .bashrc 파일은 사용자의 루트 디렉토리에 있습니다. 그래서 당신의 경우에는 /home/user2/.bashrc 또는 ~/.bashrc 해당 사용자로 로그인하는 경우.
JakeGould

@DanyLavrov : 투옥 된 user2가없는 경우 rsync ssh는 자신의 집에서 바이너리를 발견하고 실행할 수 없다.
Ipor Sircer

답변:


1

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

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

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

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


고마워. 나는 SFTP에 대한 사용자의 액세스를 제한했다. 왜냐하면 그것이 내가 그를 위해 필요한 것이기 때문이다. rsync를 사용하여 홈 폴더 안에 파일을 저장하는 데 가장 좋은 방법은 무엇입니까? 파일을 user1 소유권하에있는 디렉토리에 동기화 한 다음 rsycn을 사용하여 동일한 컴퓨터의 홈 디렉토리에 복사 할 수 있습니까? 아니면 결국 나에게 같은 오류를주는 것입니까?
Dany Lavrov

그래서 기본적으로, 만약 내가 실행하려고하는 정확한 rsync 명령을 쓸 것이다. rsync -a /home/user/sendIt.txt user2@some.host:/home/user2/ ForceCommand 옆에 실행을 허용합니까?
Dany Lavrov

이 사용자가이 특정 디렉토리로 제한되어야한다는 사실에 부작용이 있습니까? 이 사용자는 여전히 sftp를 사용하여 파일을 연결하고 가져올 수 있습니까?
Dany Lavrov

0

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


0

문제 해결됨.

처음에 나는 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 디렉토리에 나타나고 읽을 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.