UNIX / Linux에서 SSH를 사용하여 비밀번호없이 Rsync를 설정하는 방법은 무엇입니까? 두 호스트간에 rsync를 설정하려면 어떻게해야합니까?

비밀번호를 제공하지 않고 두 호스트간에 rsync를 설정하려면 어떻게해야합니까?



답변

아래는 The Geek Stuff 의 기사입니다 .

1. ssh를 통한 rsync 테스트 (암호 사용) :

원격 서버에서 사용자 계정의 비밀번호를 요청하고 파일을 원격 서버에 성공적으로 복사하도록 rsync를 수행하십시오.

다음 예는 로컬 폴더로 동기 /home/test
원격 폴더 /backup/test(ON 192.168.200.10서버).

원격 서버에서 계정의 비밀번호를 묻습니다.

rsync -avz -e ssh /home/test/ user@192.168.200.10:/backup/test/

2. ssh-keygen은 키를 생성합니다.

이제 sshssh를 수행 할 때 비밀번호를 묻지 않도록 설정하십시오 . 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

또는

  • id_rsa.pub를 열고 내용을 복사하십시오
  • rsync 명령에서 동일한 사용자를 사용하여 ServerB에 로그인
  • ServerB에서 내용을에 추가하십시오 ~/.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


답변