Eu tenho um par de chaves pública/privada RSA em meu laptop; em uma máquina remota, tenho duas contas A e B, cada uma com a chave pública em /home/{A,B}/.ssh/authorized_keys. Com a chave privada carregada no ssh-agent no meu laptop, posso fazer ssh para A@remote sem senha, mas B@remote solicita uma senha.
Não tenho ~/.ssh/ssh_config no meu laptop. O usuário A ainda não possui senha; B faz. Mudar /etc/ssh/ssdh_config para "PasswordAuthentication no" apenas resulta em "ssh publickey negado" para o usuário B.
O servidor está no Ubuntu 9.10 Karmic, com OpenSSH_5.1p1 Debian-6ubuntu2, OpenSSL 0.9.8g 19 de outubro de 2007. O laptop é Ubuntu 10.04 com OpenSSH_5.3p1.
Responder1
Acontece que a pasta $HOME/.ssh do usuário quebrado tinha a permissão "gravação" habilitada para o grupo. chmod go-rwx $HOME/.ssh
corrigiu o problema.
Responder2
No meu caso, além das permissões para o .ssh/authorized_keys
arquivo (ver resposta de @tobym), a causa do problema foi uma conta bloqueada.
Depuração no servidor com sudo tail -f /var/log/auth.log
show
User <account-name> not allowed because account is locked
A conta foi bloqueada porque não defini nenhuma senha, pois queria apenas autenticação baseada em chave e sem senha. A solução foi
sudo passwd <account-name>
e atribua alguma senha complexa aleatória.