Como gerar uma chave RSA para acesso ssh sem password

Para aceder a um servidor por ssh temos, normalmente, que introduzir uma password de acesso. Este procedimento acarreta dois problemas. O primeiro tem a ver com o facto de estarmos a enviar a nossa password não encriptada por aí fora e alguém a pode apanhar. Não que seja provável isto acontecer, mas é possível.
O segundo problema é quando queremos, por exemplo, publicar de uma forma periódica ficheiros para o servidor (um backup agendado por rsync, por exemplo).

Para resolver estas questões, ou simplesmente para não ter que introduzir a password cada vez que se ligam por ssh ao servidor, vamos seguir os seguintes passos:

  • Gerar uma chave RSA privada no nosso computador:
  • ssh-keygen -t rsa

    Aceitar as 3 opções pedidas por default (não inserir password)

  • Agora vamos copiar a chave gerada (chave pública) para o servidor (substituir moura@exemplo.net pelo servidor em causa):
  • scp ~/.ssh/id_rsa.pub moura@exemplo.net:~/

  • Agora vamos fazer login no servidor (única vez que vamos usar a password):
  • ssh moura@exemplo.com

  • Uma vez dentro do servidor, vamos adicionar a chave (chave pública anteriormente enviada) à lista de chaves autorizadas:
  • mkdir .ssh
    cat id_rsa.pub >> .ssh/authorized_keys
    rm id_rsa.pub

  • Agora vamos só assegurar que os ficheiros têm as permissões necessárias:
  • chmod go-w ~
    chmod 700 ~/.ssh
    chmod 600 ~/.ssh/authorized_keys

Agora, se fizeram tudo bem feito, já não precisam de introduzir password para aceder ao servidor ssh a partir do vosso computador.

6 Comentarios

  1. Bruno Rodrigues // March 3rd, 2007
    Safari 419.3 Mac OS X

    “O primeiro tem a ver com o facto de estarmos a enviar a nossa password não encriptada por aí fora…”

    Passou-se :P Desde quando é que a password do ssh vai por aí fora desencriptada? A password nem sequer vai, quanto mais :P Não que isto invalide o resto do post e as notas de como usar chaves (keys) em vez palavras chave (passwords).

  2. Boss // March 3rd, 2007
    Mozilla Firefox 2.0.0.2 Ubuntu Linux

    @Bruno: problemas com a tradução (e de interpretação) dos artigos lidos levaram-me a tirar esta (errada) conclusão. Obrigado pelo reparo.

  3. hav0x // March 4th, 2007
    Epiphany 2.16 Ubuntu Linux

    Tb já ia desatinar com a historia da pwd n encryptada.
    Anywho, isso das keys é engraçado mas n é para mim (uso ssh regularmente). É complicar uma negociação que deve simples. E introduz umas variaveis que sinceramente me dão suores frios :P (irem-me ás chaves etc). Já como é tou sempre a ver se n tenho ninguem a espreitar por cima do ombro.
    Sim … ando a tomar uns comprimidos para a paranoia

  4. Paulo A. Silva // March 4th, 2007
    Mozilla Firefox 2.0.0.2 Mac OS X

    Boss isso acontece no ftp que assenta no UDP. Será fácil com um sniffer ( http://en.wikipedia.org/wiki/Packet_sniffer ) apanhar as tramas e juntar a password!
    Este é um exercício típico no estudo das comunicações por computador!

  5. Bruno Rodrigues // March 4th, 2007
    Safari 419.3 Mac OS X

    @Paulo A. Silva: O FTP assenta no UDP? Desde quando?

    @hav0x: O conceito das chaves é muito usado em dois casos – o que o Rui descreveu, que é usado quando se tem total confiança na máquina (laptop encriptado, maquina em casa, etc) e se sabe que a chave privada não irá ser apanhada facilmente, e dá jeito ter uma forma de aceder à maquina remota de forma automatica e sem ter de introduzir uma password. Tal como o Rui disse, dá jeito quando se acede muito a uma determinada máquina, quando se quer usar automatismos como o rsync, etc.
    O segundo caso é quando o admin da maquina remota te quer dar acesso à maquina dele, mas não quer saber a tua password nem quer dar acesso à shell. Este é o caso tipico de contas CVS/SVN com permissões de escrita. Nestes casos, geras a tua chave (com a tua própria password, ou sem password se quiseres) e mandas a chave publica ao admin da maquina remota. Assim o acesso é seguro para ambas as partes e ninguem sabe a password do outro.

  6. Paulo A. Silva // March 4th, 2007
    Mozilla Firefox 2.0.0.2 Mac OS X

    @Bruno Rodrigues: Obrigado pela correcção.

    TFTP assenta em UDP, contudo a informação de que a password (e demais informação) seguem de forma não encriptada é válida em ambas (TFTP e FTP).