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
다--rsh
rsync
환경 변수 사용과 함께 이 방법은 SSHPASS
매뉴얼의 예제 섹션에 설명되어 있습니다.