私のラップトップには RSA 公開/秘密キーのペアがあり、リモート マシンには 2 つのアカウント A と B があり、それぞれの公開キーは /home/{A,B}/.ssh/authorized_keys にあります。ラップトップの ssh-agent に秘密キーがロードされているので、パスワードなしで A@remote に ssh できますが、B@remote ではパスワードの入力を求められます。
私のラップトップには ~/.ssh/ssh_config がありません。ユーザー A にはまだパスワードがありませんが、ユーザー B にはあります。/etc/ssh/ssdh_config を「PasswordAuthentication no」に切り替えると、ユーザー B に対して「ssh publickey denied」という結果になります。
サーバーは、Ubuntu 9.10 Karmic、OpenSSH_5.1p1 Debian-6ubuntu2、OpenSSL 0.9.8g (2007 年 10 月 19 日) です。ラップトップは、Ubuntu 10.04、OpenSSH_5.3p1 です。
答え1
壊れたユーザーの $HOME/.ssh フォルダーで、グループに対して「書き込み」権限が有効になっていることが判明しました。chmod go-rwx $HOME/.ssh
問題は修正されました。
答え2
私の場合、ファイルへの権限(s. 回答 by @tobym)に加えて.ssh/authorized_keys
、問題の原因はアカウントがロックされていたことです。
sudo tail -f /var/log/auth.log
表示されたサーバー上でデバッグ
User <account-name> not allowed because account is locked
パスワードを設定しなかったのでアカウントがロックされました。パスワードなしのキーベースの認証だけを望んでいたからです。解決策は
sudo passwd <account-name>
ランダムな複雑なパスワードを割り当てます。