Shell Script - como fazer scp no servidor remoto e baixar arquivos e proteger senhas

1

Eu tenho um servidor remoto do qual preciso baixar os logs do Apache.

Eu posso manualmente scp no servidor e pegar os arquivos, mas eu gostaria de colocar isso no crontab. A única maneira de automatizá-lo é incluir a senha do servidor de destino, o que eu prefiro não fazer.

O que você recomendaria para scp no outro servidor, obter arquivos e baixá-los para outra máquina?

    
por Tensigh 08.07.2014 / 10:49

2 respostas

3

Eu recomendaria criar um par de chaves privada / pública na máquina cliente e copiar a chave pública para a máquina remota.

Você pode gerar um par de chaves com ssh-keygen e copiá-lo para a máquina remota usando ssh-copy-id .

Os logs são provavelmente legíveis por todas as contas de usuário no servidor (pelo menos eles estão na minha máquina). Portanto, você não deve usar a conta root no servidor para isso, pois o acesso root ao seu cliente significaria acesso raiz à máquina remota.

    
por 08.07.2014 / 10:57
4

Você pode autorizar quantas chaves públicas desejar no lado do servidor. Além disso, você pode restringir uma chave a um comando específico no lado do servidor. Portanto, gere um par de chaves SSH no cliente e não coloque uma senha na chave privada. Anexe a chave pública à lista de chaves autorizadas e adicione uma restrição de comando.

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:

No servidor, edite a linha recém-adicionada de ~/.ssh/authorized_keys ( ssh-copy-id coloca no final) e adiciona a diretiva de comando forçada:

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

rrsync é um script de wrapper sobre o rsync que é projetado especificamente para permitir que o rsync SSH apenas para ou de um diretório específico. Altere o caminho acima se rrsync estiver em um diretório diferente de /usr/bin .

    
por 09.07.2014 / 02:44