sábado, 12 de maio de 2007

Acesso SSH sem precisar digitar a senha e as facilidades administrativas desse recurso

Olá pessoal, um recurso muito interessante do SSH é a possibilidade de usarmos chaves no lugar de senhas para acessar outras máquinas. Dããã isso todo mundo já sabe e há toneladas de informações sobre isso na internet. Mas vou demonstrar aqui que esse recurso pode ser muito mais útil do que simplesmente acessar o servidor da sua rede sem o incoveniente de ficar digitando senhas.
Bem, vamos então ao básico, como configurar esse acesso. Logado na máquina que fará o acesso e com a conta do usuário que fará o acesso (isso ficou repetitivo não?) use o comando ssh-keygen:

$ ssh-keygen

Ele fará umas perguntas e mostrará os arquivos onde guardará as chaves, que são:

~/.ssh/id_rsa
~/.ssh/id_rsa.pub

Essa id_rsa.pub é a sua chave pública, é como se fosse a impressão digital da sua máquina, e é ela que usaremos para acessar a outra máquina. Agora você deve copiar o conteúdo desse arquivo para o arquivo ~/.ssh/authorized_keys do usuário na máquina que será acessada.
Como a coisa funciona? Na hora em que você usa o comando ssh para logar em uma máquina o que acontece é mais ou menos isso:

$ ssh infog@debian

Sua Máquina: Tenta conectar à porta 22 da máquina remota.
Máquina Remota: Aceita a conexão.
SM: Verifica se a máquina remota é conhecida, checando o arquivo ~./ssh/known_hosts, se não for ela pergunta se você quer adicioná-la à lista. Se for conhecida ela checa a identidade da máquina remota. Isso é muito útil, imagine que alguém trocou a máquina que você acessava ou está usando o mesmo IP dessa máquina para capturar senhas, o ssh consegue saber se é a mesma máquina ou não e se não for ele te avisa, assim você pode, por exemplo, ligar para o local onde a máquina fica e perguntar o que houve. Continuando... Então rola um papo entre as máquinas:
SM: - Opa, e aí debian tudo bem, eu sou o infog e venho da máquina gnu.
MR: - Olá infog, tudo certo aqui. Ok, deixe-me ver sua impressão digital?
SM: - Ah, claro que sim, aqui está (~/.ssh/id_rsa.pub).
MR: - Obrigado, vou conferir, aguarde por favor. (Compara o id_rsa.pub com o ~/.ssh/authorized_keys, se a impressão estiver no authorized_keys o acesso é permitido):
MR: - Oi, desculpe pela demora, sua impressão confere com minha lista, seja bem vindo!
SM: - Obrigado!

Caso a impressão não esteja na lista o seguinte aconteceria:

MR: Poxa cara você não está na lista, podemos tentar com outra impressão? (Se você tiver outro tipo de chave ela será enviada).
SM: Eu não tenho outra impressão, o que faremos?
MR: Hum, você pode me mandar uma senha e eu comparo com a do usuário aqui. Pode ser? Digite aqui:
password:

Bem daí pra você sabe o que acontece.

Mas quais são as facilidades disso além de nãao digitar a senha? Imagine que você está com um problema em sua máquina e não esteja conseguindo resolver, então aquele cara que você conheceu no irc se oferece para ajudar, mas você não quer dar sua senha para ele e nem quer mudar a senha da máquina para algo como 123 para que ele acesse. Aqui você poderia pedir para ele enviar a chave pública dele, você coloca no seu authorized_keys, ele acessa e te ajuda, e depois disso você remove a chave do authorized_keys. Pronto ele te ajudou e nem sabe do tipo de senha que você usa e você pode autorizá-lo ou desautorizá-lo sempre que precisar.

Lembrem-se crianças, não vão sair adicionando qualquer um no seu authorized_keys e quando o fizer faça com um usuário que tenha permissões apenas para ajudar na solução do seu problema.

Bem, é isso. Boa sorte à todos e lembrem-se de ler o manual para obter mais recursos e aprender sempre mais sobre as ferramentas que você usa no dia-a-dia.

InFog

3 comentários:

Arton disse...

Parabéns pelo artigo, muito didático ;-)

André Benedetti Toda disse...

bacana cara!
essa "conversa" entre o servidor e a sua máquina foi muito boa!
parabéns

Plínio disse...

C é Bruto mesmo hein!!!