rsync sem prompt para senha, usando sshpass, quão inseguro é isso?

1

Estou tentando desenvolver um script bash para baixar de um servidor remoto para minha máquina local. Eu chamo rsync, e preciso evitar digitar a senha sozinha toda vez. Os seguintes trabalhos:

 sshpass -p "my remote pw" rsync -r -n -t -v --progress -s myid@remote:/remote_path /local_path

A questão é: quão inseguro é isso? Existem maneiras melhores, que, no entanto, são simples o suficiente para serem implementadas. Obrigado

    
por mario 23.08.2016 / 10:42

1 resposta

2

Isso não é muito seguro, pelo menos não em um ambiente multiusuário. De acordo com a documentação sshpass :

The -p option should be considered the least secure of all of sshpass's options. All system users can see the password in the command line with a simple "ps" command.

Em segundo lugar, há o problema de armazenar a senha em texto simples no script. Se você for fazer isso, pelo menos, certifique-se de definir permissões razoáveis (algo como 700).

Se possível, você deve usar a autenticação baseada em chave. Você ainda precisa tomar precauções para reduzir a probabilidade de o arquivo-chave ser comprometido enquanto armazenado no seu computador, mas você elimina o problema do comando em execução que está vazando sua senha e como um bônus adicional, a chave privada provavelmente será muito mais strong para quebrar do que uma senha. Para facilitar, você pode criar uma entrada em ~/.ssh/config , por exemplo:

Host mysite.com
    HostName mysite.com
    Port 22
    User me
    IdentityFile ~/.ssh/id_mysite.key

Com uma entrada como acima, você pode modificar seu comando para simplesmente

rsync -r -n -t -v --progress -s mysite.com:/remote_path /local_path

Embora não seja obrigatório, prefiro manter todas as minhas chaves em ~/.ssh porque limita os locais onde as chaves podem estar flutuando e o diretório .ssh normalmente tem, por padrão, permissões mais restritas. Eu também configurei a permissão de cada arquivo-chave para 600, então você pode considerar isso como a permissão de arquivo padrão dentro de ~/.ssh para mais conveniência e para reduzir a probabilidade de esquecer chmod em algum ponto no futuro.

Por último, se você quiser ainda mais segurança, você pode proteger sua chave privada com senha e ter algo como seahorse desbloqueá-la quando fizer login (acredito que a senha esteja criptografada e a chave de criptografia para desbloquear a senha seja a senha você usa para fazer o login). Dessa forma, você não precisa digitar a senha. Eu tenho algumas configurações assim, mas infelizmente não me lembro exatamente como fiz isso. De qualquer forma, é provavelmente um exagero.

    
por 24.08.2016 / 08:20