비밀번호를 제공하지 않고 두 호스트간에 rsync를 설정하려면 어떻게해야합니까?
비밀번호를 제공하지 않고 두 호스트간에 rsync를 설정하려면 어떻게해야합니까?
답변:
아래는 The Geek Stuff 의 기사입니다 .
1. ssh를 통한 rsync 테스트 (암호 사용) :
원격 서버에서 사용자 계정의 비밀번호를 요청하고 파일을 원격 서버에 성공적으로 복사하도록 rsync를 수행하십시오.
다음 예는 로컬 폴더로 동기
/home/test
원격 폴더/backup/test
(ON192.168.200.10
서버).원격 서버에서 계정의 비밀번호를 묻습니다.
rsync -avz -e ssh /home/test/ user@192.168.200.10:/backup/test/
2. ssh-keygen은 키를 생성합니다.
이제
ssh
ssh를 수행 할 때 비밀번호를 묻지 않도록 설정하십시오 .ssh-keygen
로컬 서버에서 사용하여 공개 및 개인 키를 생성 하십시오 .$ ssh-keygen
암호를 입력하십시오 (암호가 없으면 비어 있음).
동일한 비밀번호 문구를 다시 입력하십시오. 참고 : 비밀번호 문구를 입력하라는 메시지가 표시되면 Enter 키를 누르십시오. 여기에 비밀번호를 입력하지 마십시오.
3. ssh-copy-id는 공개 키를 원격 호스트에 복사합니다.
을 사용
ssh-copy-id
하여 공개 키를 원격 호스트에 복사하십시오.ssh-copy-id -i ~/.ssh/id_rsa.pub user@192.168.200.10
참고 : 위는 원격 호스트의 사용자 계정에 대한 비밀번호를 요청하고 공개 키를 자동으로 적절한 위치에 복사합니다. ssh-copy-id가 작동하지 않으면 앞에서 설명한 방법을 사용하여 ssh 비밀번호를 덜 로그인하도록 설정하십시오.
4. 비밀번호없이 ssh를 통한 rsync 수행
이제 비밀번호를 입력하지 않고 원격 호스트로 ssh 할 수 있어야합니다.
ssh user@192.168.200.10
rsync를 다시 수행하십시오. 이번에는 비밀번호를 입력하라는 메시지가 표시되지 않습니다.
rsync -avz -e ssh /home/test/ user@192.168.200.10:/backup/test/
ServerA에서 공개 키 생성
$ ssh-keygen
$ Enter passphrase (empty for no passphrase):
$ Enter same passphrase again:
공개 키가 생성되어 저장됩니다
~/.ssh/id_rsa.pub
공개 키를 원격 호스트에 복사
ssh-copy-id -i ~/.ssh/id_rsa.pub 192.168.1.100
또는
~/.ssh/authorized_keys
. 파일이 없으면 작성하십시오. 파일 모드가 700인지 확인하십시오.이 모든 rsync 제안은 Ubuntu 16.04 LTS의 2017 년 8 월 최신 버전을 사용하여 실패합니다. 그들 중 하나가 작동하지 않습니다.
또한 파일 서버에서 rsync 데몬을 실행해야하는 결함도 공유합니다.
이 답변은 일반적인 Linux NAS에서 작동합니다
단계는
다음과 같습니다. 1) 아래와 같이 rsync를 사용하십시오. (생성 한 / mnt 또는 / media 아래 또는 마운트 한 장치의 디렉토리로 이동하십시오. 2) 아래 그림과 같이 scp로 파일을 전송하십시오. FileZilla도 작동합니다.
이 모든 것 (FileZilla 제외)은 암호없이 cron에서 작동 할 수 있습니다.
이 설정은 매우 잘 작동합니다. 비밀번호가 필요한 유일한 시간은 RSA 비밀번호없는 로그인을 설정하기 위해 초기 ssh-copy-id를 설정할 때입니다. 그런 다음 FileZilla에 한 번 프로그래밍하십시오. 그 후에는 매일 암호 프롬프트가 표시되지 않습니다. 이것은 쉬워요. 그리고 가장 좋은 점은 rsync 프로그램의 모든 이점을 사용할 수 있다는 것입니다.
이 답변은 비밀번호없이 rsync 자체를 사용하는 방법을 설명합니다.
또한 어느 시스템에 또 다른 데몬 (rsync)을 설치할 필요가 없습니다.
아직 수행하지 않은 경우 다음을 수행하십시오.
ssh-keygen
ssh-copy-id -i ~/.ssh/id_rse.pub NASserver
이것을 이것으로 테스트하십시오 :
ssh NASserver
그리고 아마도 이런 식으로 :
scp myfile myusername@NASserver:Documents
두 번째 하드 드라이브가 있으므로 rsync를 사용하여 부트 드라이브를 sdb1의 하위 디렉토리 (/ mnt에 마운트되고 rsync에서 제외됨)에 복사합니다.
실제 하드 드라이브가없고 사용 가능한 공간이 충분하면 / mnt (또는 / media) 아래에 서브 디렉토리를 작성하여 사용하십시오.
디렉토리가 제외되는 한 별도의 드라이브에 있는지 여부는 중요하지 않습니다.
백업 스크립트는 다음과 같습니다.
cls
echo "EMPTYING TRASH"
rm ~/.local.share/Trash/*
echo "====================================================================="
echo " BEGINNING rsync from root to /mnt/full/sysbkp"
echo "====================================================================="
time sudo rsync -aAXv / --delete --ignore-errors --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} /mnt/full/mysystem
rsync가 스크립트를 사용한 후 :
대상 NAS 서버에 항상 새 디렉토리를 만듭니다 : / mnt / fullsys / mysystem 관련 파일 만 전송됩니다.
ssh -e"mv /mnt/fullsys/mysystem mysystem.bak" myusername@NASserver
ssh -e"mkdir /mnt/fullsys/mysystem" myusername@NASserver
scp -r /mnt/full/mysystem myusername@NASserver:/mnt/fullsys/mysystem
짜잔! 시간이 걸리지 만 완료됩니다.
두 스크립트 모두 cron에서 잘 작동합니다.
대안은 FileZilla를 사용하여 NAS 서버를 수동으로 보내는 것입니다.
make a new directory and enter it
대상 1TB HDD에서 항상 FileZilla를 통해 삭제가 가능 하므로 관련 파일 만 전송됩니다.
전송이 완료된 후에 만 이전 버전을 제거합니다.
짜잔 성공.
사용자를 주소에 더 좋게 표시
ssh-copy-id -i ~/.ssh/id_rsa.pub <user_in_server>@192.168.1.100
rsync -aAVx $(ssh-copy-id -i /home/myusername/.ssh/id_rsa.pub)
그런 다음 excludes
and and --delete
etc. 나는 그것을 작동시키지 않았지만 이것은 내가 본 것 중 가장 가깝습니다. 아마 당신은 이미 할 수있는 경우에이 작업을 수행해야 ssh
하고 scp
정상 SFTP 형식을 사용하지 않기 때문에 대상 서버 및 rsync를 데몬에 필요한 실행 할 수 있습니다. 나는 아직도 찾고있다.