Como conectar via ssh sem pedir a senha?

Quando temos que rodar scripts, ou alguma coisa numa rede, ou num cluster e precisamos que não fique pedindo senha (pois deve ser um processo automático) precisamos configurar nosso ambiente.

Neste caso específico, o problema apareceu ao quere rodar um programa que faz uso de mpi. O mpi cria vários processos, e cada um se conecta ou em localhost ou em uma outra maquina especificada. O fato é que abrir uma conexão ssh seja para localhost ou outra máquina da rede normalmente exige senha.

Configuramos aqui para que o usuário "mpi" consiga conectar-se na na própria máquina (por ssh) sem que lhes seja pedido senha.

Rode o "ssh-keygen", ele vai gerar chaves que vão fazer com que o host "confie" em sua maquina e aceite essa conexão. Apenas va dando enter, não mude o caminho onde as chaves serão geradas e NÃO COLOQUE valor (apenas enter) na "passphrase" que lhe pede.

[mpi@hrpc /]$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/mpi/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/mpi/.ssh/id_rsa.
Your public key has been saved in /home/mpi/.ssh/id_rsa.pub.
The key fingerprint is:
xx:xx:xx:xx:xx:xx:xx:xx:xx:xx: mpi@hrpc
The key's randomart image is:
+--[ RSA 2048]----+
| xxxxx |
| xxxxx |
| xxx |
| xxxxx |
| xxxxx |
| xxxxxxx |
| xxxxxxx |
| xxxxxxx |
| xxx |
+-----------------+

Agora que foi gerada uma chave (id_rsa.pub), você precisa copiar esse arquivo (ou adicionar, se você já tem esse arquivo em "authorized_keys".

[mpi@hrpc /]$ cd $home
[mpi@hrpc ~]$ cd .ssh/
[mpi@hrpc .ssh]$ ls
id_rsa id_rsa.pub known_hosts
[mpi@hrpc .ssh]$ cp id
id_rsa id_rsa.pub
[mpi@hrpc .ssh]$ cp id_rsa.pub authorized_keys

Fizemos tudo isso logados com o usuário "mpi" a ele que queremos confiar conexão ssh sem senha. Veja abaixo que ESTANDO LOGADO com "mpi" e abrindo uma conexão para localhost ele não pede mais senha.

[mpi@hrpc .ssh]$ ssh localhost
Last login: Sat Jun 13 18:18:45 2009 from hrpc
[mpi@hrpc ~]$

Perceba que esse "não pedir senha" é apenas para conexões ssh. Veja abaixo, estou logado com "helton" e quero entrar com o usuário "mpi", a senha continua sendo pedida.
[helton2@hrpc ~]$ su mpi
Password:
[mpi@hrpc helton2]$

Da mesma forma o usuário "helton" não consegue conectar por ssh sem senha para localhost. Não colocando usuario@host o ssh assume que você quer conectar com o usuário que está logado atualmente, ou seja, nas linhas abaixo seria equivalente a "ssh helton@localhost".
[helton2@hrpc ~]$ ssh localhost
Warning: Permanently added 'localhost' (RSA) to the list of known hosts.
helton2@localhost's password:
Last login: Thu Apr 23 23:14:40 2009
[helton2@hrpc ~]$
Da mesma forma, se não estando logado com o usuário, mandamos conectar usando aquele usuário em específico, a senha é requerida.
[helton2@hrpc ~]$ ssh mpi@localhost
mpi@localhost's password:
Last login: Sat Jun 13 19:22:29 2009 from hrpc
[mpi@hrpc ~]$
Resumo de tudo, apenas logado com "mpi" conseguimos conectar com "localhost" sem pedir senha.

Alguns materiais na internet foram úteis até se chegar a essa solução.
http://www.dicas-l.com.br/dicas-l/20050804.php

http://imasters.uol.com.br/artigo/5097/

http://www.vivaolinux.com.br/artigo/Conexoes-SSH-sem-senha-facil-e-descomplicado/

http://gppd.inf.ufrgs.br/cluster/index.php/Acesso_aos_N%C3%B3s_por_SSH
2009-07-16 16:32:00
Este é o antigo Live Helton

Então, português é minha língua mãe, eu não tenho tanto a aprender quanto nos demais idiomas, assim este blog não discute aprendizado do idioma, e sim tópicos randômicos de interesse do dia a dia. Tecnologia, desenvolvimento, um pouco de reflexão crítica, enfim, uma bagunça bem como nossa mente é.
RSS Feed
"A vida é curta demais para ser pequena / The live is so short to be small / Das leben zu kurz sind für kleine sein". (Benjamin Disraeli)