SSH 키 비밀번호를 주기적으로 요구하는 스크립트를 자동화하는 방법

SSH 키 비밀번호를 주기적으로 요구하는 스크립트를 자동화하는 방법

rsync를 주기적으로 실행하고 rsync를 실행할 때마다 SSH 키 비밀번호를 묻는 스크립트를 자동화하고 싶습니다.

스크립트 시작 부분에 비밀번호를 한 번 입력해도 괜찮습니다. 루프에서 rsync 명령을 실행할 때마다 메시지가 표시되지 않습니다.

비밀번호를 한 번 입력하고 계속 사용할 수 있는 깨끗하고 안전한 방법이 있습니까?

내 가상의 해결책은 어떻게든 비밀번호를 입력하라는 메시지를 표시하고(어떻게 해야 할지 모르겠음) 이를 환경 변수에 저장한 다음 사용하는 것입니다. 하지만 제가 모르는 더 쉬운 방법이 있을 것 같아요.

답변1

인증 프록시를 설정합니다. 지금 바로 ssh-agent. 백그라운드에서 실행되며 인증이 필요한 요청을 가로챕니다. 에이전트를 시작하면 비밀번호를 한 번 입력하라는 메시지가 표시됩니다. 비밀번호를 메모리에 보관하고 인증이 필요할 때마다 자동으로 비밀번호를 삽입합니다(예: 키가 설치된 원격 호스트에 SSH를 사용하여 로그인).

여기 일어나서 달리는 한 가지 방법이 있습니다. 스크립트를 생성하고 다음과 같이 편리한 위치(예: ~/bin)에 배치합니다.

start_agent ()
{
    echo "Initialising new SSH agent...";
    /usr/bin/ssh-agent | sed 's/^echo/#echo/' > ${SSH_ENV};
    echo succeeded;
    chmod 600 "${SSH_ENV}";
    . "${SSH_ENV}" > /dev/null;
    /usr/bin/ssh-add
}

# Source SSH settings, if applicable
SSH_ENV=$HOME/.ssh/environment
if [ -f ${SSH_ENV} ]; then
     . "${SSH_ENV}" > /dev/null
     # ps flags are not always portable so check here if agent doesn't start
     ps -p "${SSH_AGENT_PID}" || start_agent;
else
     start_agent;
fi

그런 다음 다음 스크립트를 받으세요: . ~/bin/ssh-agent-init.sh. 이 시점에서 비밀번호를 묻는 메시지가 표시되므로 비밀번호를 입력하면 됩니다.

.bashrc항상 실행되도록 하려면 직접 다운로드할 수 있습니다.

관련 정보