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 artigo explica como estabelecer uma ligação usando o protocolo SSH sem uso de senha (SSH password-less) e com total segurança.
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 bit usando o algoritmo rsa. Mas se quisermos melhorar a segurança da nossa chave, podemos criar uma chave de 1024 bit. Assim, em alternativa podemos usar o seguinte comando:
ssh-keygen -b 1024 -t rsa
Após o passo anterior, irá ser pedido qual o ficheiro 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):
De seguida será ser pedida a “passphrare” (ou “frase senha”). Não indique nada e carregue apenas em “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 ficheiros: ~/.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 fazer-se passar por sí.
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 tem um servidor remoto com o nome remote_host e nesse servidor temos o utilizador remote_user.
O ficheiro ~/.ssh/authorized_keys na 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
De seguida, vamos adiconar a chave criada às chaves autorizadas. Ligamos ao servidor:
ssh remote_user@remote_host
Cria-se o directório .ssh caso não exista e adiciona-se 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á ligar-se ao servidor remoto usando os vários comandos do protocolo SSH sem necessitar de digitar a senha. Exemplo:
ssh remote_user@remote_host
Conclusão
Espero que este guia o ajude a optimizar as suas tarefas com o protocolo SSH. Pode deixar o seu comentário ou sugestão de melhoria abaixo.
Fonte: AlexandreCunha.Com
Site: http://alexandrecunha.com/node/9




Olá Flávio Silva, parabéns pelo seu excelente tutorial.
Tenho um servidor de SSH a correr no CentOS 5.5 e segui o seu tutorial para copiar a chave publica do cliente para o servidor SSH do CentOS 5.5 e deparei-me com os seguintes problemas:
- O utilizador ROOT no CentOS é o único que não possui o directório “.ssh “ ?
- Os restantes utilizadores do sistema apesar de possuírem o directório “.ssh” não existe neste o ficheiro “authorized_keys” ?
Pergunto-lhe se a chave publica é copiada para o directorio “.ssh” de um utilizador qualquer do sistema, e também como não existe o ficheiro “authorized_keys” se o tenho de criar ?
Obrigado pela sua atenção.
Sim, é isto mesmo, na verdade o arquivo é criado com os camandos que são efetuados para gerar as chaves entre os servidores.
Grato