UNIX / Linux에서 SSH를 사용하여 비밀번호없이 Rsync를 설정하는 방법은 무엇입니까?


19

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

linux  ssh  rsync 

매우 도움이 될 것입니다 : blogs.oracle.com/jkini/entry/how_to_scp_scp_and
Tom

Maverick143이 답을 제공했지만이 질문은 프로그래밍과 거의 관련이 없으므로 실제로 StackOverflow에 속하지 않습니다. SuperUser.com이 더 관련성이있었습니다.
Martin

답변:


30

아래는 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/

이것은 더 잘 도움이됩니다. troy.jdmz.net/rsync/index.html
MangeshBiradar

5
geekstuff.com/2011/07/rsync-over-ssh-without-password 에서 명확한 복사 및 붙여 넣기를 수행 하면 원래 작성자를 참조해야합니다.
로렌스 체로 네

다른 사용자를 사용해야하는 경우 ssh-copy-id를 수행 할 때 사용할 수 있습니다. ssh-copy-id -i ~ / .ssh / id_rsa.pub user@192.168.200.10
Finni McFinger

1

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인지 확인하십시오.

0

이 모든 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를 통해 삭제가 가능 하므로 관련 파일 만 전송됩니다.

전송이 완료된 후에 만 ​​이전 버전을 제거합니다.

짜잔 성공.


-1

사용자를 주소에 더 좋게 표시

ssh-copy-id -i ~/.ssh/id_rsa.pub <user_in_server>@192.168.1.100

2
이것이 질문에 대한 답변이 될 수 있지만, 그 이유에 대한 설명을 제공 할 수 있다면 더 나은 답변이 될 것 입니다.
DavidPostill

또한 구문. 나는 이것이 다음과 같은 명령 대체로 사용된다고 생각합니다. rsync -aAVx $(ssh-copy-id -i /home/myusername/.ssh/id_rsa.pub)그런 다음 excludesand and --deleteetc. 나는 그것을 작동시키지 않았지만 이것은 내가 본 것 중 가장 가깝습니다. 아마 당신은 이미 할 수있는 경우에이 작업을 수행해야 ssh하고 scp정상 SFTP 형식을 사용하지 않기 때문에 대상 서버 및 rsync를 데몬에 필요한 실행 할 수 있습니다. 나는 아직도 찾고있다.
SDsolar
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.