쉘 스크립트 - 원격 서버로 scp하여 파일을 다운로드하고 비밀번호를 보호하는 방법

쉘 스크립트 - 원격 서버로 scp하여 파일을 다운로드하고 비밀번호를 보호하는 방법

Apache 로그를 다운로드해야 하는 원격 서버가 있습니다.

수동으로 서버에 가서 파일을 가져올 수 있지만 scpcrontab에 넣고 싶습니다. 자동화하는 유일한 방법은 대상 서버의 비밀번호를 포함시키는 것인데 저는 그렇게 하고 싶지 않습니다.

scp다른 서버로 가서 파일을 가져와 다른 컴퓨터에 다운로드하는 것을 어떻게 제안합니까 ?

답변1

서버 측에서는 원하는 수의 공개 키를 승인할 수 있습니다. 또한 서버 측의 특정 명령으로 키를 제한할 수 있습니다. 따라서 클라이언트 측에서 SSH 키 쌍을 생성하고 개인 키에 비밀번호를 입력하지 마십시오. 인증된 키 목록에 공개 키를 추가하고 명령 제한 사항을 추가합니다.

ssh-keygen -t rsa -f ~/.ssh/apache-logs-download.id_rsa -N ''
ssh-copy-id -i ~/.ssh/apache-logs-download.id_rsa server.example.com:

서버에서 새로 추가된 라인을 편집합니다.~/.ssh/authorized_keys( ssh-copy-id마지막에 추가됨) force 명령 지시어를 추가합니다.

command="/usr/bin/rrsync -ro /var/log/apache",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa AAAA…

rrsyncSSH를 통해 특정 디렉터리에만 rsync를 허용하도록 특별히 설계된 rsync용 래퍼 스크립트입니다. rrsync.이외의 디렉토리에 있는 경우 위의 경로를 변경하십시오 /usr/bin.

답변2

클라이언트 컴퓨터에 개인/공개 키 쌍을 만들고 공개 키를 원격 컴퓨터에 복사하는 것이 좋습니다.

를 사용하여 이러한 키 쌍을 생성 ssh-keygen하고 이를 원격 시스템에 복사할 수 있습니다 ssh-copy-id.

로그는 서버의 모든 사용자 계정에서 읽을 수 있습니다(적어도 내 컴퓨터에는 있습니다). 따라서 root클라이언트에 대한 루트 액세스는 원격 시스템에 대한 루트 액세스를 의미하므로 이를 위해 서버의 계정을 사용해서는 안됩니다 .

관련 정보