Como automatizar um script que requer uma senha de chave ssh em intervalos regulares [duplicado]

0

Eu gostaria de automatizar um script que executa regularmente o rsync, e o rsync solicita minha senha da chave ssh toda vez que eu o executo.

Eu não me importo de digitar a senha uma vez no início do script. Eu não posso ser solicitado toda vez que ele executa um comando rsync em um loop.

Existe uma maneira limpa e segura de solicitar a senha uma vez e continuar usando-a?

Minha solução presumida seria pedir a senha de alguma forma (não sei como fazer isso em cima da minha cabeça) e armazená-lo em uma variável de ambiente, então use esperar para fazer uso dele. Mas eu sinto que pode haver uma abordagem mais fácil que eu não conheço.

    
por David Parks 30.09.2017 / 01:52

1 resposta

2

Configure um agente de autenticação. Ou seja, ssh-agent . Isso é executado em segundo plano e intercepta solicitações que exigem autenticação. Quando você inicia o agente, ele pede sua senha uma vez. Ele o mantém na memória e cada vez que a autenticação é necessária (por exemplo, usando o SSH que você registra em um host remoto no qual sua chave foi instalada), ele é inserido automaticamente.

Aqui está uma maneira de começar a trabalhar. Crie um script e coloque-o em algum lugar conveniente (por exemplo, ~ / bin) da seguinte forma:

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

Em seguida, basta utilizar este script: . ~/bin/ssh-agent-init.sh . Você será solicitado a inserir sua frase secreta neste ponto, para inseri-la e, em seguida, é bom ir.

Você pode obtê-lo do seu .bashrc se quiser que ele seja executado o tempo todo.

    
por 30.09.2017 / 02:01

Tags