Imagine a situação em que devemos gerenciar muitos servidores remotamente, inclusive em outras cidades... este é o meu caso e percebi a necessidade de manter um backup atualizado das configurações dos servidores que gerencio, pois em caso de perda de um deles a recuperação se daria com uma instalação do sistema e depois descompactar um arquivo na raiz do sistema sobrescrevendo os arquivos necessários.
Então desenvolvi 2 scripts que fazem isso, um fica nos servidores sendo executado pela cron gerando os arquivos com o backup e outro na minha máquina para realizar o download e gerar um log simples.
Para a comunicação resolvi utilizar o ssh e para não precisar digitar senha usei autenticação por chaves.
Preparando a comunicação
Para realizar as conexões via ssh sem a necessidade de senha, primeiro gere as chaves da sua estação:
$ ssh-keygen -q -t rsa1 -N "senha_chave" -f ~/.ssh/identity
$ ssh-keygen -q -t rsa -N "senha_chave" -f ~/.ssh/id_rsa
$ ssh-keygen -q -t dsa -N "senha_chave" -f ~/.ssh/id_dsa
Agora você precisa copiar a sua chave pública para as máquinas remotas.
$ scp ~/.ssh/id_rsa.pub [email protected]:~/.ssh/authorized_keys2
$ scp ~/.ssh/identity.pub [email protected]:~/.ssh/authorized_keys
Pronto! feito isso a sua estação poderá se logar com o usuário user.
Obs:
1. O seu usuário não precisa ser o "user", mas você se logará como "user" nos servidores remotos.
2. Após copiar a authorized_keys2 quando você for copiar a authorized_keys você perceberá que o pedido de senha mudou, você deverá entrar com a "senha_chave" e não mais com a senha de "user".
Aí você pergunta: Mas ainda pede senha! Sim é verdade, só que aí na sua estação você irá digitar o comando ssh-add ele vai te pedir uma senha, você coloca a "senha_chave" e pronto, na próxima vez que você logar vai direto!
Também não fiz o procedimento como root para ter uma maior segurança, vai que a chave cai na mão de quem não deve...