quarta-feira, 17 de julho de 2013

Autenticar SSH sem senha

Esse post é mais uma dica que uso há algum tempo, e que algumas pessoas ainda não conhecem. Mas que ajuda muito no dia a dia.

SSH

Antes de mais nada, sabe o que é SSH?

SSH (Secure Shell) é um protocolo para login remoto seguro, ou seja um protocolo que visa fazer a comunicação entre dois hosts distantes através de um autenticação segura e em seguida troca de dados utilizando algoritmos de chave simétrica. Diferente de outras ferramentas como rsh, rcp, rlogin e telnet, o SSH codifica toda a comunicao.


Problema

Uma das coisas mais chatas é ficar acessando ssh e colocar a senha. Principalmente se você tem vários servidores para acessar, e faz isso com muita frequência, ou seja várias vezes ao dia.

Solução

Uma forma de contornar isso é utilizar o:
ssky-keygen e ssh-copy-id


Como Fazer?

Criar as Chaves na máquina local

1) Crie um par de chaves RSA (uma chave privada e uma chave pública) para autenticação, digitando:

 ssh-keygen -t rsa  

2) Será solicitado o local para armazenar a chave.


*Importante: Se você tem várias chaves criadas para cada servidor, é nesse passo que você terá que alterar o nome. Exemplo. Em vez de dar um "ENTER", digite:

 /home/alexandre/.ssh/id_rsa_outroservidor  


3) Será solicitado logo em seguida seu passphrase ou "frase secreta". É uma senha para indentificar que você é o proprietário da chave criada:


*Importante: Guarde essa senha que será usada posteriormente

Após isso sua chave será criada. 2 arquivos serão criados no diretório informado acima:
- id_rsa que é a chave privada
- id_rsa.pub que é a chave pública




Copiar as Chaves para o servidor remoto

Agora será necessário copiar sua chave no servidor remoto:

4) Para fazer a cópia digite:

 ssh-copy-id -i ~/.ssh/id_rsa.pub user@server  

O que ele faz é copiar a chave pública (dá um append) dentro do arquivo "authorized_key". Ou seja ele automatiza esse passo.

5) Será solicitado passphrase (o mesmo que você digitou no passo 3)

6) Pronto! Você já estará acessando seu servidor remoto sem senha. É só testar:


 ssh user@server  

Obs:
Se a chave pública estiver em outro diretório ou você nomeou ele de outra forma passe o parâmetro i:
 ssh -i /home/alexandre/.ssh/id_rsa_outroservidor user@server  


Importante!
Não esqueça de dar as devidas permissões principalmente no servidor que você irá acessar:
chmod 600 /home/servidor/.ssh/authorized_key
chmod 700 /home/servidor/.ssh/


Outras dicas

1) Hostname
Para gerenciar todos os servidores remotos é complicado.
Você pode criar hostname atrelado ao IP, modificando o arquivo:

 sudo vi /etc/hosts  

Colocando IP e depois o hostname.
Assim fica mais fácil lembrar dos servidores.




2) Gerenciador de SSH
Outra dica para não se perder, é usar uma aplicação que é um menu de conexões SSH.

Temos o SSHMenu para GNOME, e achei o Shuttle para Mac.

Ele é simples, pois é só editar um arquivo de configuração (um arquivo Json).




Se tiverem mais dicas, dá uma comentada. Sempre é bom termos opções e saber como outros desenvolvedores trabalham.

Nenhum comentário:

Postar um comentário