2012-12-28 4 views
4

웹 서버 (odin)와 백업 서버 (jofur)가 있습니다. jofur에, 나는 jofur 오딘에서 (키 인증을 통해) 내 웹 디렉토리를 rsync는 다음 코드를 실행할 수 있습니다rsync 코드가 실행되지만 cron에는 실행되지 않습니다.

rsync -avz -e ssh [email protected]:/home/backups /home/myuser/odin 

내가 명령 줄에이를 입력하면, 모든 것을 완벽의 rsyncs :

[email protected]:~$ rsync -avz -e ssh [email protected]:/home/backups /home/myuser/odin 

receiving incremental file list 

sent 23 bytes received 1921 bytes 1296.00 bytes/sec 
total size is 349557271 speedup is 179813.41 

나는이 매일 아침 실행하려면, 그래서이 글을 읽을 내 crontab을 편집 :이 작동하지 않습니다

0 4 * * * rsync -avz -e ssh [email protected]:/home/backups /home/myuser/odin 

. 다음 메시지는/var/mail/myuser에 보관됩니다.

Could not create directory '/home/myuser/.ssh'. Host key verification failed. rsync: connection unexpectedly closed (0 bytes received so far) [Receiver] rsync error: unexplained error (code 255) at io.c(605) [Receiver=3.0.9]

이 오류의 의미를 모르겠습니다. 백도어를 열어두고 싶지 않기 때문에 맹목적으로 권한을 부여하는 것에 조심 스럽습니다. 어떤 제안?

답변

2

크론이 잘못된 rsync 바이너리를 사용하고 있는지 또는 rsync가 cron에 설정되지 않은 변수가 필요한지 여부를 알기가 어렵습니다. 아래 그림과 같이 stdout/stderr을 설정하고 로그 파일의 출력을 전달하십시오.

또한 "명령 줄에서"rsync "를 수행하십시오. 이 명령 줄에서 사용중인 rsync 알려줍니다.

 
0 4 * * * rsync -avz -e ssh [email protected]:/home/backups /home/myuser/odin > /tmp/cron_output.log 2>&1 

편집 :

는 다음을 포함 SOME_DIR/cron_job_rsync.sh라는 쉘 스크립트를 만들 수 있습니다. 실행 비트를 설정했는지 확인하십시오.

 
#!/bin/sh 
/usr/sbin/rsync -avz -e ssh [email protected]:/home/backups /home/myuser/odin 

내가 유사한 문제가 있었다

 
0 4 * * * SOME_DIR/cron_job_rsync.sh >/tmp/cron_output.log 2>&1 
+0

안녕 케빈 > & 1' 매분마다 실행하도록 설정 한 경우에도 crontab은 전혀 실행되지 않습니다. 나는 매분 (* * * * *)을 실행하도록 설정할 때 메일에 오류를 던질 것이기 때문에 이것을 알고있다. 그러나 코드를 넣으면 오류를 던지거나 출력 로그를 업데이트하지 않는다. . – peteyreplies

+0

그 이상입니다. 위의 편집을 시도해 볼 수 있습니까? – bubbly

+0

안녕 케빈 - 미안해. '/ bin/sh : 1 : /home/user/scripts/cron_rsync.sh : Permission denied' – peteyreplies

1

아래 그림과 같이 cron 작업을 수정합니다. 내 홈 디렉토리가 암호화되었습니다.

사용자가 로그인하면 known_hosts가 작동합니다. 이 크론 때

는하지만, 크론은 바로 사용자를 사용하지만 :-(는 암호화되어 있기 때문에 그것은 당신의 $ HOME/~/스푸핑 디렉토리에 액세스 할 수 없습니다

+3

입니다. 이것은 답변이 아니므로 더 많은 의견입니다. 당신의 해결책은 어디에 있습니까? –

0

는 내 서버의 관리자와 통신하여이 문제를 해결 여기에 그들이 나에게 무엇인가. 그들은 "와 관계있는"것을 말해 나에게 후속 이메일을 보내

For advanced security and performance, we use 1H (Hive) which utilizes a chrooted environment for users. Libraries and binaries should be copied to the chrooted environment to make them accessible.

을 패키지가 설치되었습니다. 이 시점에서 문제는 해결되었습니다. 불행히도, 나는 그 (것)들에게서 어떤 추가 정보도 얻지 않았다. 호스트는 Arvixe 였지만 1H (하이브)를 사용하는 사람은 비슷한 문제가 발생할 것이라고 추측합니다. 바라건대이 대답은 도움이 될 것입니다.다음과 같이

0

전용 SSH 키와 함께 rrsync 스크립트를 사용

원격 서버

mkdir ~/bin 
gunzip /usr/share/doc/rsync/scripts/rrsync.gz -c > ~/bin/rrsync 
chmod +x ~/bin/rrsync 

로컬 컴퓨터

ssh-keygen -f ~/.ssh/id_remote_backup -C "Automated remote backup"  #NO passphrase 
scp ~/.ssh/id_remote_backup.pub [email protected]:/home/devel/.ssh 

원격 컴퓨터

cat id_remote_backup.pub >> authorized_keys 
,691,363 새로 추가 된 라인 (210)

전에 추가

command="$HOME/bin/rrsync -ro ~/backups/",no-agent-forwarding,no-port-forwarding,no-pty,no-user-rc,no-X11-forwarding 

그래서 결과가 보이는 것을 다음과 같은

command="$HOME/bin/rrsync -ro ~/backups/",no-agent-forwarding,no-port-forwarding,no-pty,no-user-rc,no-X11-forwarding ssh-rsa AAA...vp Automated remote backup 

LOCAL x 허가 당신의 crontab 다음 스크립트에 넣어

:

#!/bin/sh 
echo "" 
echo "" 
echo "CRON:" `date` 
set -xv 
rsync -e "ssh -i $HOME/.ssh/id_remote_backup" -avzP [email protected]:/ /home/user/servidor 

출처 : http://www.guyrutenberg.com/2014/01/14/restricting-ssh-access-to-rsync/

1

나는 당신과 똑같은 오류가 있습니다.

나는 마침내 사용자 홈 디렉토리가 '마운트 포인트'라는 것을 알았습니다. 로그인 할 때 변경되었습니다.

셸 명령 'mount'를 사용하여 동일한 방법으로 홈 디렉토리를 사용할 수 있는지 확인할 수 있습니다.

그래서, 난 당신이 $을 확인해야하기 때문에, 다음,

```

cp -ar ${HOME}/.ssh /tmp/ 
sudo umount ${HOME} 
mv /tmp/.ssh ${HOME} 

```

가 실패 할 수있다하면된다 '/ CD'와 기록 {홈} 쓰기 권한이있는 경우 sudo를 시도하거나 $ {홈}에 쓰기 가능 권한을 추가하십시오.

그 후, 모든 것이 괜찮습니다.

0

작동시키기 위해 몇 가지 단계를 거쳤습니다.

  1. 경로를 확인하십시오. 모든 당신은 which [command]를 확인 사용하고 crontab을 위해 그 전체 경로를 사용합니다 명령

  2. 당신이 그것을 실행하려는 사용자로
  3. 열기의 crontab은 그래서에 액세스 할 수 있는지 사용자 SSH 키

  4. 추가 (사용자에게) ssh-agent && [your ssh-command]을 기억하여 ssh를 통해 연결할 수 있습니다.

  5. 이 시점에서 여전히 인증이 실패하는 경우. 암호가없는 ssh 키를 생성하십시오. 이렇게하면 암호를 묻는 메시지를 건너 뛸 수 있습니다.

디버깅의 경우 rsync의 ssh 명령에 -vvv를 추가하는 것이 유용합니다. 그것은 무엇이 잘못되는지 분명하게합니다. `는/usr/빈/rsync` 하지만 내 cron 명령의 끝에이 추가 : `> /tmp/cron_output.log 2 반환 "rsync는" -

관련 문제