키 인증 없이 SSH를 통한 비밀번호 없는 Rsync

키 인증 없이 SSH를 통한 비밀번호 없는 Rsync

SSH를 통해 연결되는 RSync 작업을 설정하고 싶습니다.

내 컴퓨터(backup@myhost)와 원격 호스트(test@remhost)가 있고 모든 내용이 포함된 ~/something 폴더를 백업해야 합니다. SSH 사용자 테스트에는 ~/ 폴더의 모든 파일과 폴더에 대한 읽기 액세스 권한만 있습니다. rsync를 사용하여 test@remhost:~/something 폴더를 backup@myhost:~/bak 폴더로 복사하고 싶습니다.

이를 위해 Ubuntu 11.10(Oneiric)에서 BASH를 통해 다음 명령을 사용합니다.

rsync -avz -e ssh test@remhost:~/something/ ~/bak/

Enter 키를 누르면 다음과 같은 결과가 나타납니다.

test@remhost's password:

비밀번호를 입력하면 rsync가 작동합니다.

위의 명령을 통해 비밀번호를 자동으로 입력하여 매개변수로 전달하거나, 자동으로 입력하고 작업을 시작하도록 하고 싶습니다.

실행을 시도했지만 rsync -avz -e ssh test:password@remhost:~/something/ ~/bak/여전히 비밀번호를 묻는 메시지가 표시되어 짜증납니다.

나는 어떤 종류의 키(RSA, DSA 또는 기타)에 대해서도 듣고 싶지 않습니다. 나는 로그인하고 작업을 수행하는 간단한 명령을 원합니다.

편집하다:가능한 시나리오는 공개 키 인증이 비활성화되어 있고 이를 변경할 수 없는 경우입니다. 예를 들어 OpenSSH를 사용하는 경우 파일을 편집 sshd_config하고 PubkeyAuthentication yes.

편집하다:이것이 마침내 나를 위해 일한 것입니다.

sshpass -p 'sshpassword' rsync --progress -avz -e ssh test@remhost:~/something/ ~/bak/

이 방법은 비밀번호를 일반 텍스트로 전송하고 중간자 공격에 취약하므로 안전하지 않은 것으로 간주됩니다. 보다 강력한 보안을 위해 키 인증을 사용하는 것이 좋습니다.

답변1

어쩌면 시도해봐 SSH패스.

사용하기에는 충분히 간단해 보입니다. apt를 통해서도 사용할 수 있습니다.

나는 열쇠를 복사하기 전에 이와 같은 것을 찾고 있었지만 어쨌든 이미 필요한 곳에 열쇠가 있기 때문에 이것을 시도할 시간이 없었습니다.

하지만 비밀번호의 가시성과 관련하여 해당 튜토리얼의 면책조항을 참고하세요.


이 작업을 수행해야 하는 모든 사람을 위해:

sshpass -p 'sshpassword' rsync --progress -avz -e ssh test@remhost:~/something/ ~/bak/

답변2

보안 위협에 더욱 안전한 솔루션 변형은 권한이 엄격한 파일에 비밀번호를 저장하고 다음 -f과 함께 플래그를 사용하는 것입니다 shpass.

sshpass -f '/home/me/.password' rsync --progress -avz -e ssh
test@remhost:~/something/ ~/bak/

차이점은 실행 중인 프로세스를 나열하면 명령줄에 비밀번호가 표시되지 않고 이제 비밀번호가 있는 파일의 경로만 표시된다는 것입니다.

답변3

암호 없이 공개 키 인증이 자동 SSH/rsync 로그인에 더 나은 솔루션이 아닌 상황은 상상할 수 없습니다.

어쨌든 expect원하는 것을 달성할 수 있는 방법이어야 합니다. 비밀번호를 ssh로 파이프할 수는 없지만 이는 매우 유사합니다. 어떻게 해야 하는지 답변이 나와있습니다여기 스택오버플로우에서.

답변4

이것은 또한 작동합니다:

system <<~ "RSYNC";
    rsync \\
      --rsh="sshpass -p '$password' ssh -p 22" \\
      --archive \\
      --verbose \\
      --progress \\
      --partial \\
      --human-readable \\
      "$directory" \\
      "$options{host}:${directory}"
RSYNC

즉. 앞이 아닌 지나가 sshpass--rshrsync

환경 변수 사용과 함께 이 방법은 SSHPASS매뉴얼의 예제 섹션에 설명되어 있습니다.

https://www.freebsd.org/cgi/man.cgi?query=sshpass&sektion=1

관련 정보