Gerando e Instalando Chaves com o PuTTYGen (PuTTY Key Generator)

Existem diversas vantagens em utilizar a autenticação por chaves no PuTTY. Dentre elas podemos citar:
  • Aumento da segurança, pois podemos desativar o login interativo (no qual se digita o nome de usuário e senha) e permitir apenas a autenticação através de chaves. Com isso, elimina-se a possibilidade de uma invasão por brute force.
  • Praticidade: utilizando o Pageant, que é um agente SSH. Quando você efetua uma conexão com um programa que o suporte, o Pageant fornece as chaves para a conexão. Assim, você só precisa digitar a passphrase desta chave uma úinica vez (voltarei a falar sobre isso mais à frente).
Preparando:
Obtenha o pacote de instalação do PuTTY no site oficial. Durante o desenvolvimento desse artigo a versão atual era a putty-0.60-installer.exe. Caso você não possa realizar instalação de softwares na sua máquina, você também pode realizar o download dos componentes individualmente. Nesse caso, você vai precisar dos programas PuTTY, Pageant e PuTTYGen. Porém, algumas facilidades do programa não estarão disponíveis, como a associação automática dos arquivos de Chave Privada com o Pageant (embora isso possa ser feito manualmente posteriormente).
Após baixar e instalar o programa (ou colocar os arquivos em uma pasta), inicie o PuTTYGen. Você verá uma tela semelhante a esta (clique nas imagens para ampliar):
No painel inferior, você define o tipo de chave (SSH-1, SSH-2 RSA e DSA) e o tamanho da chave em bits. Os valores habituais (SSH-2 RSA de 1024 bits) já vêem selecionados por padrão. Após isso, clique no botão "Generate". Após isso, é necessáio mover o mouse aleatóriamente por sobre a janela do programa, até que a barra de progresso seja completamente preenchida (sim, eu sei que a imagem tá tosca ...).
Após alguns instantes, a geração das chaves estará completa. Existem alguns campos agora a serem preenchidos (marcados com 1 na figura):
  • Key Comment: Permite inserir um comentário na chave. É opcional, mas facilita a identificação da chave posteriormente.
  • Key Passphrase / Confirm: Permite inserir uma senha na chave. Assim, antes de utilizar a chave será necessário a digitação da senha. É opcional, mas aumenta a segurança. Considere que uma chave privada sem passphrase seria igual a um cartão de banco sem senha: qualquer um que encontrasse o cartão poderia ter acesso à conta do proprietário. Já um cartão com senha (ou uma chave privada com passphrase) é inútil para quem encontra. É necessário digitar a passphrase e a repetir abaixo.
Vamos agora instalar a chave pública (que fica na máquina que se pretende acessar e não é secreta. Pense nela como a fechadura de uma porta). Existem duas maneiras de se fazer isso: clicar no botão "Save Public Key" e salvar a chave em um arquivo ou copiar o conteúdo do campo 3 da figura para o arquivo de chaves. Em máquinas linux, normalmente é utilizado o arquivo authorized_keys que fica no diretório .ssh dentro do diretório home do seu usuário. Então o caminho completo do arquivo seria /home/juca/.ssh/authorized_keys para um usuário chamado juca e /root/.ssh/authorized_keys para o usuário root. Após esse procedimento a chave pública estará corretamente instalada.
Importante: Tanto o diretório "~/.ssh" quanto o arquivo authorized_keys devem ser de acesso exclusivo ao usuário. Ou seja: o diretório deve ter permissões 0700 e o arquivo permissões 0600. Caso contrário, a autenticação por chaves não funcionará (e o servidor não reportará nenhum erro específico).

Falta agora salvar a chave privada (a chave privada é exclusivamente sua e não deve ser distribuída. Utilizando a analogia anterior, pense nela como a chave da fechadura.). Clique no botão "Save Private Key" (marcado no número 2 na figura) e salve o arquivo com a chave privada. Existem duas formas de utilizar a chave privada:

  • Configurando diretamente no PuTTY: Na configuração do PuTTY, em Connection->SSH->Auth, existe o campo "Private Key File for Authentication". Basta clicar em "Browse" e selecionar o arquivo da chave privada. Porém a cada nova conexão será necessário digitar a passphrase da chave.
  • Utilizando o Pageant: dando um duplo-clique no arquivo de chave publica irá acrescentar esse arquivo na lista de chaves do Pageant, após a digitação da passphrase da chave, caso haja uma. Obs: a associação que permite a abertura da chave diretamente com um duplo-clique só estará disponível caso o Pageant tenha sido instalado pelo pacote de instalação. Caso tenha sido feito o download do arquivo separado existem duas opções: registrar o tipo de arquivo da chave privada (*.ppk) para abertura com o Pageant (recomendável) ou iniciar o Pageant, clicar em "Add Key" e indicar o caminho para cada chave desejada.


10 comentários:

Anônimo disse...

como instala a key no windows XP, eu não consigo achar nada de ~/.ssh nem sei onde fica, se poder especificar seria bom, com screen porquê eu realmente tentei varias vezes, e nao tive sucesso.

Fabiano Pires disse...

Seu servidor SSH está instalado na máquina Windows? Ou você deseja instalar a chave privada no Windows? Sua pergunta está um pouco vaga ... Detalhe melhor para que eu possa te ajudar, ok?

JEFFERSON disse...

especificamente essa parte que não consigo entender.

"# moved your public key up to the server
# (maybe even) converted the format of the key from putty to openssh with something like

ssh-keygen -if pubkey > pubkey_openssh_format

# changed some permissions like

chmod 700 .ssh

# added your pubkey to the authorized_keys file with something like

cat pubkey >> .ssh/authorized_keys

# changed some more permissions like

chmod 600 authorized_keys"


Onde e como eu acesso isso: .ssh/authorized_keys, chmod 600, essa parte que estou com dificuldade, obrigado ai pela atenção.

Fabiano Pires disse...

Creio que você está se confundindo ... Não existe um trecho como este no meu tutorial ... Talvez em outra página. Em todo o caso, ~/.ssh significa o diretório .ssh dentro do diretório home do usuário. Se o nome do usuário é jose, fica assim: /home/jose/.ssh

JEFFERSON disse...

Ok.
"Em máquinas linux, normalmente é utilizado o arquivo authorized_keys que fica no diretório .ssh dentro do diretório home do seu usuário. Então o caminho completo do arquivo seria /home/juca/.ssh/authorized_keys para um usuário chamado juca e /root/.ssh/authorized_keys para o usuário root. Após esse procedimento a chave pública estará corretamente instalada."

Eu uso windows XP, Fiz todo o procedimento de gerar e salvar as Keys ( publica e privada ) em Session, estou me conectando ao Faster Dallas ( 69.147.241.217:22 ) pois é o Mais próximo do host do servidor que eu jogo, Texas. Em data coloquei o auto-login : root. btw, em SSH>Auth fui na key privada para autenticar, e Cliquei em Open e apareceu "Refused your Key".

Onde é Diretório home do usuário? é dentro do Putty? eu devo procurar no C:? é algum promot de comando? é isso que eu to querendo saber, onde ou como acessa esse ./ssh. vlw

Fabiano Pires disse...

Se a máquina que você quer acessar roda Linux, o diretório do usuário é /home/nome_do_usuario. Nesse diretório, você deve criar (se já não existir) um subdiretório chamado .ssh. Depois você entra nesse diretório e instala a chave pública no arquivo authorized_keys, conforme instruído no tutorial. Depois basta indicar o arquivo com a chave privada no PuTTY (como você ja fez) ou utilizar o agente de chaves do PuTTY, o Pageant, que testa as chaves para você. Para instalação da chave pública em um servidor Windows (se o servidor ssh estiver rodando no Windows), o procedimento é outro, um pouquinho mais chatinho, e pode ser visto no seguinte endereço:
Configuring OpenSSH (Win32) for Public Key Authentication

JEFFERSON disse...

Blz, consegui criar a key e salvar, conforme o tutorial do link que você postou, realmente salvei a key no diretório e tudo, porem está aparecendo 'server refused our key', mais já é um começo ter salvo ela, e um username válido pode ser root mesmo né? abraços.

Fabiano Pires disse...

A mensagem 'server refused our key' significa apenas que a chave enviada ao servidor pelo PuTTY foi recusada.
Um username válido pode ser root, desde que o ssh da máquina aceite conexões como root (por medida de segurança, é comum desabilitar o login do root, forçando a logar como usuário comum e depois virar root com o su/sudo).

Mariana disse...

Prezado, no passo que diz para inserir uma chave na senha (Key Passphrase / Confirm) é obrigatório? A passphrase só é gerada após esse campo ser preenchido? Após o fim da realização de todo esse procedimento o login só será feito se a máquina estiver identificada no servidor por uma passphrase?

Fabiano Pires disse...

Mariana, a passphrase é opcional e serve "apenas" para aumentar a segurança da própria chave privada (caso a chave seja protegida com uma passphrase é necessário digitar a mesma antes de poder utilizar a chave). Então basta criar as chaves (com ou sem passphrase), instalar a chave publica no servidor e configurar seu cliente SSH para utilizar a chave privada.