rsync가 비밀번호를 묻는 메시지를 표시하지 않는 경우 sshpass를 사용하는 것이 얼마나 안전하지 않습니까?

rsync가 비밀번호를 묻는 메시지를 표시하지 않는 경우 sshpass를 사용하는 것이 얼마나 안전하지 않습니까?

원격 서버에서 로컬 컴퓨터로 다운로드하기 위한 bash 스크립트를 개발하려고 합니다. 나는 rsync를 호출하고 매번 비밀번호를 직접 얻는 것을 피해야 합니다. 다음은 작동합니다:

 sshpass -p "my remote pw" rsync -r -n -t -v --progress -s myid@remote:/remote_path /local_path

문제는 이것이 얼마나 안전하지 않은가입니다. 더 나은 방법이 있지만 구현하기에 충분히 간단합니까? 감사해요

답변1

적어도 다중 사용자 환경에서는 그다지 안전하지 않습니다. sshpass문서 에 따르면 :

-p 옵션은 모든 sshpass 옵션 중에서 가장 안전하지 않은 옵션으로 간주되어야 합니다. 모든 시스템 사용자는 간단한 "ps" 명령을 사용하여 명령줄에서 비밀번호를 볼 수 있습니다.

둘째, 스크립트에 비밀번호를 일반 텍스트로 저장하는 문제가 있습니다. 이렇게 하려면 최소한 합리적인 권한(예: 700)을 설정해야 합니다.

가능하다면 키 기반 인증을 사용해야 합니다. 컴퓨터에 저장된 키 파일이 손상될 가능성을 줄이기 위해 여전히 예방 조치를 취해야 하지만, 비밀번호를 공개하기 위해 명령을 실행하는 문제를 제거하고 추가 보너스로 개인 키가 더 강력해질 가능성이 높습니다. 비밀번호보다 해독하기가 더 어렵습니다. 작업을 더 쉽게 하려면 다음 ~/.ssh/config과 같이 항목을 생성할 수 있습니다.

Host mysite.com
    HostName mysite.com
    Port 22
    User me
    IdentityFile ~/.ssh/id_mysite.key

위 항목을 사용하면 명령을 다음과 같이 수정할 수 있습니다.

rsync -r -n -t -v --progress -s mysite.com:/remote_path /local_path

~/.ssh필수는 아니지만 키가 떠 있을 수 있는 위치를 제한하고 .ssh디렉터리는 일반적으로 기본적으로 더 엄격한 권한 설정을 갖기 때문에 모든 키를 유지하는 것을 선호합니다 . 또한 각 키 파일에 대한 권한을 600으로 설정했으므로 더 편리하고 ~/.ssh나중에 잊어버릴 가능성을 줄이기 위해 이를 내부적으로 기본 파일 권한으로 설정하는 것을 고려할 수 있습니다 .chmod

마지막으로 보안을 강화하려면 개인 키를 비밀번호로 보호한 다음 seahorse로그인할 때 잠금을 해제할 수 있습니다(비밀번호는 암호화되어 있으며 잠금을 해제하는 암호화 키는 로그인에 사용한 비밀번호라고 생각합니다). 이렇게 하면 비밀번호를 입력할 필요가 없습니다. 이와 같은 설정이 몇 가지 있지만 불행히도 어떻게 했는지 기억이 나지 않습니다. 아무튼 이건 좀 많을 수도 있겠네요.

관련 정보