Depois de algumas semanas sem conseguir configurar meu notebook para acessar meus servidores remotos usando
SSH sem senha, finalmente parei pra ler as páginas de manual e descobri o problema, que é bem simples por sinal. Testado em Debian, mas com certeza vale pras demais distribuições.
O problema
Partindo do princípio que você já sabe como configurar SSH sem senha (
tem várias fontes sobre aqui no VOL), vou explicar resumidamente.
Estava criando o arquivo de identificação do meu desktop da seguinte forma:
$ ssh-keygen -t dsa
Daí ao responder a seguinte pergunta:
Enter file in which to save the key (/home/fabio/.ssh/id_dsa):
Eu mudava a localização padrão da chave, para por exemplo, notebook_dsa. No servidor remoto (192.168.0.100 neste caso) eu seguia os procedimentos normalmente:
$ scp notebook_dsa.pub 192.168.0.100:~/.ssh/
$ ssh 192.168.0.100
E lá (remotamente):
$ cat ~/.ssh/notebook_dsa.pub >> ~/.ssh/authorized_keys
Porém o acesso sem senha teimava em não funcionar. O problema é que o SSH ao tentar se autenticar procura pelos arquivos
~/.ssh/identity (para o protocolo 1) ou
~/.ssh/id_rsa e
~/.ssh/id_dsa (para o protocolo 2). Como notebook_dsa não é um dos caminhos padrão para o mesmo, ele se confundia e não autenticava.
Solução
Renomear a chave privada de notebook_dsa para id_dsa. A chave pública pode ter qualquer nome. Se não quiser renomear, pode tentar o acesso usando o parâmetro -i, por exemplo:
$ ssh -i ~/.ssh/notebook_dsa 192.168.0.100
Devem haver outras formas de contornar esse problema, mas essas já me foram o suficiente. :)
Um abraço.