rsync --password-file 옵션 설정이 작동하지 않습니다.

rsync --password-file 옵션 설정이 작동하지 않습니다.

rsync소스에서 대상으로 폴더를 반복적으로 보내는 데 사용합니다 . 직접 bash명령을 사용하면 비밀번호를 묻는 메시지가 나타납니다. 비밀번호를 묻는 메시지가 표시되는 것을 방지하기 위해 및 를 실행하여 폴더를 대상으로 반복적으로 보내는 스크립트를 cpp호출하는 간단한 프로그램을 만들었습니다 . 나는 이것을 시도했다bashrsyncforkexec답변, 그러나 오류를 반환합니다.

sudo rsync $args --password-file=rsync_pass -avz /home/user/folder/checkpoints/$1 [email protected]::checkpoints/$1

rsync: failed to connect to 192.xxx.xxx.xxx (192.xxx.xxx.xxx): Connection refused (111)
rsync error: error in socket IO (code 10) at clientserver.c(127) [sender=3.1.3]

노트:--password-file그냥 옵션 을 사용하고 싶어요

다음 명령을 실행하여 rsync데몬이 대상 측에서 실행되고 있는지 확인했습니다 sudo systemctl status rsync. 이 내 꺼야rsyncd.conf

pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsync.log
port = 12000

[files]
path = /home/public_rsync
comment = RSYNC FILES
read only = true
timeout = 300

어떻게 작동하게 합니까?

답변1

비표준 rsync 포트를 사용하고 있기 때문에 연결이 거부되었습니다. roaima 사용자의 설명을 참조하세요.

public_rsync단순화를 위해 홈 디렉터리가 있는 사용자가 대상 호스트 /home/public_rsync(데몬이 실행 중인 192.xxx.xxx.xxx)에 존재하고 서비스가 방화벽에 의해 차단되지 않기를 원합니다 .

다음 예시로 시작하세요 /etc/rsyncd.conf(나중에 비밀번호 활성화).

pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsync.log

[checkpoints]
path = /home/public_rsync/checkpoints
comment = RSYNC FILES
read only = false
uid = public_rsync
gid = public_rsync
#auth users = secondaryvm
#secrets file = /etc/rsyncd.secrets
timeout = 300

설명하다:

  • port = 12000기본 포트 873을 사용하려면 제거하세요 .
  • 모듈 이름을 [files]다음에서 변경하십시오.[checkpoints]
  • 모듈 디렉터리의 경로를 다음으로 변경합니다./home/public_rsync/checkpoints
  • 서버에 파일을 푸시할 수 있도록 read only = true변경 되었습니다 .false
  • 파일을 전송할 때 이 사용자 이름/그룹을 사용하려면 uid/를 추가하세요 .gid

그런 다음 서버를 다시 시작합니다.

sudo systemctl restart rsync

1. rsync대상 호스트에서 사용자로 테스트public_rsync

  1. rsync localhost::모듈 이름과 설명을 반환해야 하는 List all listable module 을 사용하십시오 .

    [email protected]:~$ rsync localhost::
    checkpoints      RSYNC FILES
    
  2. 디렉터리를 만들고 checkpoints그 안에 테스트 파일을 만듭니다.

    [email protected]:~$ mkdir ~/checkpoints
    [email protected]:~$ echo helloworld > ~/checkpoints/helloworld.txt
    
  3. 모듈의 모든 파일을 나열합니다.

    [email protected]:~$ rsync localhost::checkpoints
    drwxrwxr-x          4,096 2020/10/30 18:26:01 .
    -rw-rw-r--             11 2020/10/30 18:26:01 helloworld.txt
    

2. rsync풀/푸시 기능이 제대로 작동하는지 소스 호스트에서 테스트합니다.

  1. 인장력 테스트:

    $ rsync 192.xxx.xxx.xxx::checkpoints/helloworld.txt /tmp/
    $ cat /tmp/helloworld.txt
    helloworld
    
  2. 테스트 푸시:

    $ rsync /tmp/helloworld.txt 192.xxx.xxx.xxx::checkpoints/helloworld_push.txt
    
  3. checkpoints모듈 파일을 다시 나열합니다.

    $ rsync 192.xxx.xxx.xxx::checkpoints
    drwxrwxr-x          4,096 2020/10/30 18:29:06 .
    -rw-rw-r--             11 2020/10/30 18:26:01 helloworld.txt
    -rw-r--r--             11 2020/10/30 18:29:06 helloworld_push.txt
    

3. 인증 활성화

이제 제대로 작동한다는 것을 알았으므로 rsync대상 호스트에서 인증을 활성화합니다.

  1. /etc/rsyncd.secrets사용자 이름과 비밀번호가 포함된 텍스트 파일을 만듭니다 secondaryvm(사용자 이름은 임의적이며 사용자 계정이 필요하지 않습니다).

    [email protected]:~$ sudo tee /etc/rsyncd.secrets > /dev/null <<'EOF'
    secondaryvm:12345
    EOF
    [email protected]:~$ sudo chmod 600 /etc/rsyncd.secrets
    
  2. 다음에서 서버의 주석 처리를 해제 auth users하고 다시 시작합니다.secrets file/etc/rsyncd.conf

    [email protected]:~$ sudo systemctl restart rsync
    

4. 테스트 인증(소스 호스트에서)

자격 증명 없이는 더 이상 연결이 불가능합니다. 비밀번호를 입력해야 합니다.

$ rsync 192.xxx.xxx.xxx::checkpoints
Password:
@ERROR: auth failed on module checkpoints
rsync error: error starting client-server protocol (code 5) at main.c(1675) [Receiver=3.1.3]

연결을 위한 사용자 이름과 비밀번호를 제공하세요.

$ echo '12345' > rsync_pass
$ chmod 600 rsync_pass
$ rsync --password-file=rsync_pass [email protected]::checkpoints

문제가 해결되지 않으면 옵션을 사용하여 세부 정보를 추가 -v하고 데몬 로그를 확인하세요 /var/log/rsync.log.

관련 정보