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.
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.