terça-feira, 9 de março de 2010

SSH conectando Client x Server sem senha

Muitas pessoas precisam estabelecer conexões por ssh entre duas máquinas sem a necessidade de inserir senha mas que seja seguro. Através de algumas experiências, vou estar documentando um procedimento simples para esta tarefa.
As necessidades de exemplo para este tipo de configuração:
  • Automatização de conexão de programas para transferência de arquivos.
  • Sistemas ou aplicações para monitoramento de ambientes remotos.
  • Agilidade para administração de sistemas.
Não irei mencionar passos de instalação e configuração dos programas e servidor ssh.
Este documento terá como base sistemas Linux com o uso de distribuições Debian e Ubuntu.

Em nosso ambiente teremos uma máquina que será a client e uma servidor, em ambas estão instalados os pacotes openssh-client, apenas no server temos instalado o openssh-server.  A versão do protocolo SSH que iremos usar neste exemplo é a versão 2 ou SSH2.


Na máquina client, devemos determinar qual usuário iremos usar para poder se logar no servidor.  Em nosso exemplo vamos eleger o user.
Dentro do diretório /home/user deveremos ter um diretório oculto chamado .ssh, caso não tenha crie este diretório e recomendo fortemente que seja verificado as permissões deste diretório, para incrementar a segurança altere as permissões para 700.

Criando a chave de segurança.
Como a versão do protocolo a ser usado é o SSH2, iremos criar uma chave do tipo rsa:
[user@client ~]$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/user/.ssh/id_rsa.
Your public key has been saved in /home/user/.ssh/id_rsa.pub.
The key fingerprint is:
fb:d2:07:3b:64:b0:a7:13:c0:ae:62:b9:b1:c6:79:04 user@client
       Recomendo que em todas as perguntas seja dado apenas enter, afim de deixar os passphrase vazios. 

Enviando a chave para o servidor

Enviar o arquivo id_rsa.pub para o servidor, para isso podemos usar SFTP que é um sistema de tranferência de arquivos seguro e com base no ssh.
Ao enviar, você já pode salvar o arquivo id_rsa.pub  com outro nome, authorized_keys, ou ainda renomear ele no servidor ou executar o seguinte comendo :
cat ~/.ssh/id_rsa.pub > ~/.ssh/authorized_keys
Evitando problemas de segurança 
No diretório .ssh no servidor verifique as permissões para o arquivo authorized_keys, o ideal é que esteja com as permissões 700
As permissões de diretório também são importantes, principalmente as permissões do diretório .ssh sendo que para este o ideal são permissões 700

Se o ssh server estive iniciado e funcionando corretamente, podemos fazer o teste tentando conectar ao servidor a partir do client e a conexão será estabelecida sem a necessidade do uso da senha do user. 

Alguns links de sugestão e que foram usados para estudo : 
SSH Completo - Artigo do Site Viva o Linux escrito por Leandro Totino Pereira
http://www.vivaolinux.com.br/artigo/SSH-completo-%28passo-a-passo%29?pagina=1


Para Troubleshooting : 
http://sial.org/howto/openssh/publickey-auth/problems/

Nenhum comentário:

Postar um comentário