SSH sem senha para acesso remoto (utilizando chave pub/priv)

É possível que você efetue o acesso entre seus servidores sem fornecer senhas. Existem duas maneiras de realizar isso, uma é utilizando Kerberos e criando uma rede Single Sign-On e a outra é utilizando chaves pública/privada nos servidores. Neste post abordo a segunda solução, e quem sabe num futuro não muito distante eu descreva a segunda :)

Na maquina cliente (a maquina de onde partirá o acesso a um servidor sem pedir pela senha) crie um par de chaves publica/privada com o comando:

neto@servidorcliente# ssh-keygen -b 4096 -t rsa

onde:

  • -b informa o tamanho da chave em bits (1024, 2048, 4096)
  • -t informa o tipo da chave (RSA/DSA)

após gerar a chave, é solicitado o diretório onde será armazenado a chave (/home/neto/.ssh/id.rsa) aceite o padrão. Em seguida será solicitado a senha e a confirmação da senha. Como a intenção é logar sem auntenticação, deixe essa senha em branco.

Copie o conteúdo do arquivo /home/neto/.ssh/id.rsa.pub do servidor cliente para o arquivo /home/neto/.ssh/authorized_keys no sevidor, utilize os comandos:

# cd /home/neto/.ssh
# scp id_rsa.pub neto@servidor:id_rsa-cliente
# ssh neto@servidor
# cat id_rsa-cliente >> .ssh/authorized_keys

Agora você poderá efetuar logoff e ao logar novamente com o usuário, a senha não será mais solicitada.

Caso queira utilizar o usuário root, não esqueça de liberar no arquivo /etc/ssh/sshd_config o acesso via ssh (PermitRootLogin yes)

10 Comentários

  1. André Sencioles:

    o comando correto não seria:
    scp id_rsa.pub neto@servidor:id_rsa-cliente
    já que o arquivo deve estar no diretório home do usuário neto?

  2. Neto:

    É isso mesmo André, obrigado pela correção. eu havia implementado isso como root, e quis publicar com o usuário neto, mas não corrigi tudo. Valeu!

  3. Wagner:

    Só uma duvida: e se eu uso nfs para exportar o /home do usuário do servidor para o cliente como é feita a cópia da chave neste caso visto que o diretório .ssh é o mesmo? Estou com essa dúvida porque uso nis e nfs

  4. Neto:

    Wagner, acho que no seu caso basta apenas copiar o conteúdo do arquivo id.rsa.pub para o arquivo .ssh/authorized_keys com o comando cat id_rsa.pub >> authorized_keys (de dentro do diretório ~/.ssh). Assim você poderá efetuar o login entre seus servidores (todos que mapearem o mesmo /home) sem necessitar de senha.

  5. Wagner:

    Ok é isso mesmo! O problema é que mesmo depois de fazer isso o ssh continuava pedindo senha mas descobri que era por causa das permissões do diretório .ssh e do arquivo authorized_keys. (para resolver coloquei chmod 700 para .ssh e chmod 600 para authorized_keys). Obrigado pela ajuda!

  6. Neto:

    Ok Wagner, obrigado pelo retorno! Qualquer dúvida sinta-se a vontade em perguntar.Um Abraço, Neto.

  7. Marcos:

    Neto…esse seu artigo esta bem simplificado…

    Valeu mesmo…..Melhor ainda com o complemento do Wagner com os “chmod”, o meu só funcionou depois disso…..

    Meus usuarios agradecem…

    Até mais…

  8. Flávio:

    Neto estou com um problema semelhante ao Wagner, minhas máquinas continuam pedindo senha. Eu uso a distro redhat 7.2 com ssh atualizado para 3.7, segui todos os passos exatamente como estão no artigo e minhas máquinas continuam pedindo senha.

  9. Eliezer:

    No meu caso está pedindo a frase !!

  10. Ssh sem senha - chaves rsa:

    […] Retirado de: http://josemorelli.net/2005/11/03/ssh-sem-senha-para-acesso-remoto-utilizando-chave-pubpriv […]

Deixe um comentário