SSH sem senha

Situação: Para automatizar algumas tarefas de backup, resolvi fazer alguns scripts em bash + rsync, e pra isso, um servidor precisa ter acesso ao outro, sem a intervenção do usuário. É aí que entra o SSH com autenticação por chaves.

Cenário:
Servidor A (com usuário a) acessando o servidor B via ssh sem a requisição de senha

Gerando um par de chaves de autenticação no servidor A:

a@A:~> ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/a/.ssh/id_rsa):
Created directory '/home/a/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/a/.ssh/id_rsa.
Your public key has been saved in /home/a/.ssh/id_rsa.pub.
The key fingerprint is:
3e:4f:05:79:3a:9f:96:7c:3b:ad:e9:58:37:bc:37:e4 a@A

Criando o diretório ~/.ssh no servidor B para o armazenamento da chave pública do servidor A (se esse diretório já existir pule esse passo)

a@A:~> ssh b@B mkdir -p .ssh
b@B's password:

Concatene a chave pública ao arquivo

b@B:.ssh/authorized_keys e digite a senha do servidor B pela última vez:
a@A:~> cat .ssh/id_rsa.pub | ssh b@B 'cat >> .ssh/authorized_keys'
b@B's password:

Agora você pode logar do servidor A no servidor B (com o usuário b) sem senha!

a@A:~> ssh b@B hostname
B:~

Algumas dicas caso não funcione com os passos acima:

  • Concatene a chave pública no arquivo .ssh/authorized_keys2
  • Mude a permissão da pasta .ssh para 700
  • Mude a permissão do arquivo .ssh/authorized_keys2 para 640

Exemplo de rsync rodando sobre ssh:

 rsync -avz -e "ssh -i /home/usuário/.ssh/id_rsa" usuário@host:/var/www/pasta_copiada /var/www

Fonte: http://linuxproblem.org

[Click here to english]



Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s