공개 키 인증을 사용하지 않고 비밀번호를 묻지 않고 어떻게 재 동기화 할 수 있습니까?


44

rsync암호를 묻지 않고을 실행해야 합니다.

rsync맨 페이지에서 암호를 명령 줄 인수로 지정할 수 없다는 것을 알았습니다 .
그러나 변수를 통해 암호를 지정할 수 있음을 알았습니다 RSYNC_PASSWORD.

그래서 변수 내보내기를 시도했지만 rsync암호를 계속 묻습니다.

export RSYNC_PASSWORD="abcdef"
rsync root@1.2.3.4:/abc /def

내가 무엇을 잘못하고 있지?

고려하십시오 :

다시 말해, RSYNC_PASSWORD접근 방식 이 필요합니다 ! :-)


원격 서버에서 rsync 데몬을 활성화 했습니까?
Rahul Patil

답변:


13

이 비밀번호 환경 변수는 rsync 프로토콜을 사용할 때만 사용되는 것으로 보입니다.

rsync rsync://username@1.2.3.4:/abc /def

이것이 작동하려면 rsync를 데몬 ( --daemon옵션) 으로도 실행해야합니다 inetd.conf.

이 프로토콜을 사용 abc하는 경우에 정의 된 대상에 해당해야합니다 /etc/rsyncd.conf. 사용자 이름은 auth users이 대상 에 대한 행에 있어야하며 secrets file옵션 으로 비밀번호 파일을 지정해야합니다 .

이 비밀 파일은 다음 형식으로 사용자 이름과 비밀번호 간의 맵핑을 포함합니다.

username:password

그리고이 암호는 RSYNC_PASSWORD 환경 변수를 사용하여 지정할 수 있습니다.


rsync 서버를 실행하는
빠른

65

는 IF rsync데몬은 대상 시스템에서 실행되고 있지 않습니다, 당신은 (로컬 컴퓨터에서 모든 사람에게 암호를 노출에 대한 치료를하지 않는 이유는 명령 줄에서 누군가 암호를 사용하지해야합니까? ), 당신은 사용할 수 있습니다 sshpass:

 sshpass -p "password" rsync root@1.2.3.4:/abc /def

명령이 시작될 때의 공백에 유의하십시오. bash쉘에서 명령 (및 암호)이 히스토리에 저장되지 않습니다. RSYNC_PASSWORD절대적으로 필요한 경우가 아니라면 (이 답변의 이전 편집에 따라) 변수를 사용하지 않는 것이 좋습니다. 히스토리 저장을 억제하거나 최소한 히스토리를 지우는 것이 좋습니다. 또한 tput reset터미널 기록을 지우는 데 사용할 수 있습니다 .


2
명령에 암호로 일반 텍스트를 추가하는 것이 좋은 이유는 리눅스 관리자 101입니다.
Eddie

매우 편리합니다. 잠시 동안 이것에 대한 접근 방식을 찾고있었습니다. 감사합니다.
Isaac Gregson

6
암호를 일반 텍스트로 추가하는 것은 좋지 않지만 현재로서는 이것이 유일하게 합리적으로 간단한 방법입니다.
Weston Ganger 2016 년

15
sshpass -p $(cat passFile) ..bash 히스토리에서 명확한 패스를 숨기고 passFile에서 chmod 400을 보호하기 위해 항상 다음과 같은 작업을 수행 할 수 있습니다.
Kresimir Pendic

3
나는 이것이 오래되었다는 것을 알고 있지만, 새로운 독자들을 위해 암호 인용하십시오. 암호에는 특수 문자와 공백이 포함될 수 있습니다. -p "$RSYNC_PASSWORD"
Paddy Landau

16

표준 ssh ID를 사용하여 비밀번호없는 로그인을 수행 할 수 있습니다. 기본적으로 이와 같은 것이 있으면 처리 ~/.ssh/id_rsa되지만 인증 된 키 쌍의 개인 키에 대한 고유 경로를 하드 코딩 할 수도 있습니다.

이를 통해 암호를 노출하지 않고 배치 / 스크립트를 수행 할 수 있으며 개인 키가 손상된 경우 대상 서버에서 공개 키를 제거 할 수 있습니다.

rsync -e"ssh -i /path/to/privateKey" -avR $sourcedir ${ruser}@${rhost}:~/${rdir}/

-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null원격 호스트 키 확인을 강제하지 않도록하는 인수를 추가 할 수도 있습니다 . !주의-중간 공격으로 사람을 열며 일반적으로 나쁜 습관입니다!


1
이것은 Windows 10 용 새 Bash 셸을 사용하는 경우에 특히 유용합니다. rsync가 암호없이 작동하지 않는 이유가 궁금했습니다. 나는 그것이 ~/.sshrsync가있는 쉘 내부의 폴더를 사용하고 있음을 깨달았다 . 일단 -e를 사용하여 내부 키를 가리키면 /mnt/c/Users/MyUsername/.ssh예상대로 작동했습니다. (Thanks. : D)
Toby Deshane

12

스크립팅에 매우 유용한 것은 --password-file명령 행 옵션 을 사용하는 것입니다.

  • rsync_pass라는 빈 파일 만들기
  • 이 파일에 암호를 입력하십시오
  • chmod 600 rsync_pass
  • rsync $args --password-file=rsync_pass user@rsynchost::/share localdirectory

이것은 스크립팅에 사용될 수 있으며 시스템 변수로 비밀번호를 내보내는 것보다 더 안전합니다.


4
참고 사항 : 서버에서 실행중인 rsync 데몬도 필요합니다. ssh 키가 암호가없는 rsync에 충분하기를 정말로 바랐습니다.
Sridhar Sarnobat

IMHO 이것은 ssh를 사용하지 않으려는 경우 올바른 방법입니다.
maxf130

이 답변에 가장 적합한
AJ Meyghani
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.