sexta-feira, 8 de abril de 2011

Autenticação automática sem senha com protocolo SSH

Sempre que se estabelece uma conexão baseada no protocolo SSH (por exemplo, com os comandos SSH, SCP, SFTP ou RSYNC) é necessário digitar a password (senha) em algum momento do processo.


Este texto explica como estabelecer uma ligação usando o protocolo SSH sem uso de senha (SSH password-less) e com total segurança. Isto é útil para uso, por exemplo, em scripts de backup.


1) Criação das chaves


Vamos criar as chaves. Para isso em modo terminal, digitar o seguinte comando:
ssh-keygen -t rsa

O comando anterior irá criar uma chave de 512 bits usando o algoritmo de criptografia RSA. Mas se quisermos melhorar a segurança da nossa chave, podemos criar uma chave de 1024 bits. Assim, em alternativa podemos usar o seguinte comando:


ssh-keygen -b 1024 -t rsa
Após o passo anterior, irá ser pedido qual o arquivo onde se guarda a chave. Apenas pressione a tecla “enter” para passar à fase seguinte.

Enter file in which to save the key (/home/ac/.ssh/id_rsa):
 
Em seguida será pedida a “passphrare” (ou “frase senha”). Não digite nada e apenas aperte “enter”.
Enter passphrase (empty for no passphrase):
Será pedida uma confirmação da “frase senha”. De novo passe adiante usando a tecla “enter”.

Enter same passphrase again:
Chegou agora à conclusão do procedimento de criação das chaves. Aparecerá uma mensagem semelhante a esta:

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: 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00
Estão criados agora 2 arquivos:
~/.ssh/id_rsa – chave privada que nunca deverá partilhar;
~/.ssh/id_rsa.pub – chave publica que deverá ser colocada nas máquinas onde se pretende ligar sem usar senha.

Para melhorar a segurança da chave privada e impedir que esta seja lida por terceiros que usem o seu computador, executar o seguinte comando:

chmod 0600 ~/.ssh/id_rsa
Note que qualquer pessoa que tenha esta chave (a sua chave privada!) poderá usurpar a sua identidade e se fazer passar por si.

2) Colocação da chave pública em servidores remotos

Podemos agora passar à colocação da chave pública nos servidores remotos. Vamos assumir neste exemplo que há um servidor remoto com o nome remote_host e nesse servidor temos o utilizador remote_user.

O arquivo ~/.ssh/authorized_keys da maquina remote_host contêm uma lista de chaves públicas. Vamos acrescentar o rsa.pub (sua chave pública) à lista de chaves públicas na máquina remote_host. Começamos por copiar o id_rsa.pub para a remote_host.

scp ~/.ssh/id_rsa.pub remote_user@remote_host:rsa.pub_importado
 
Em seguida, vamos adicionar a chave criada às chaves autorizadas. Conectamos ao servidor via SSH:
ssh remote_user@remote_host
Criamos o diretório .ssh, caso não exista, e adicionamos a chave:
mkdir .ssh
chmod 0700 .ssh
cat rsa.pub_importado >> .ssh/authorized_keys
chmod 0644 .ssh/authorized_keys
rm rsa.pub_importado
exit
3) Teste
A partir deste momento poderá conectar-se ao servidor remoto usando os vários comandos do protocolo SSH sem necessitar de digitar a senha. Exemplo:
ssh remote_user@remote_host

0 comentários:

Postar um comentário