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
항상 실행되도록 하려면 직접 다운로드할 수 있습니다.