У меня есть пара ключей RSA открытый/закрытый на моем ноутбуке; на удаленной машине у меня есть две учетные записи A и B, каждая из которых имеет открытый ключ в /home/{A,B}/.ssh/authorized_keys. С закрытым ключом, загруженным в ssh-agent на моем ноутбуке, я могу подключиться по ssh к A@remote без пароля, но B@remote запрашивает пароль.
У меня на ноутбуке нет ~/.ssh/ssh_config. У пользователя A пока нет пароля; у B есть. Переключение /etc/ssh/ssdh_config на "PasswordAuthentication no" приводит только к "ssh publickey denied" для пользователя B.
Сервер работает на Ubuntu 9.10 Karmic с OpenSSH_5.1p1 Debian-6ubuntu2, OpenSSL 0.9.8g 19 октября 2007 г. На ноутбуке установлена Ubuntu 10.04 с OpenSSH_5.3p1.
решение1
Оказалось, что папка $HOME/.ssh сломанного пользователя имела разрешение «запись» для группы. chmod go-rwx $HOME/.ssh
Исправлена проблема.
решение2
В моем случае, помимо прав доступа к файлу .ssh/authorized_keys
(см. ответ @tobym), причиной проблемы была заблокированная учетная запись.
Отладка на сервере с помощью sudo tail -f /var/log/auth.log
show
User <account-name> not allowed because account is locked
Аккаунт был заблокирован, потому что я не установил пароль, так как я хотел просто беспарольную аутентификацию на основе ключа. Решение было
sudo passwd <account-name>
и назначьте какой-нибудь случайный сложный пароль.