Назад | Перейти на главную страницу

openssh: сбой открытого ключа только для одного пользователя

Клиент: opensuse 10.3, openssh 4.6 хост: opensuse 11.3, openssh 5.4

У меня есть пользователь, у которого настроен открытый ключ ssh для хоста, чтобы разрешить запуск некоторых сценариев через cron. Мы перенесли хост на новый сервер и обнаружили, что пользователь больше не может подключаться к хосту. На клиенте я удалил открытый и закрытый ключи RSA и известные хосты, а на сервере я удалил файл authorized_keys для пользователя. После этого я сгенерировал новые ключи ssh RSA с помощью ssh-keygen -t rsa, а затем скопировал id_rsa.pub в authorized_keys на сервере. Тем не менее, я не могу подключиться.

Для ухмылки я настраиваю ключи ssh RSA для своего пользователя на том же клиентском компьютере, подключаясь к тому же хосту. После копирования id_rsa.pub в authorized_keys на сервере я смог успешно войти в систему.

У меня есть еще один пользователь на клиентской машине, у которого также работает ssh-ключ к хосту. Так что, похоже, именно эта учетная запись вызывает проблемы.

Файлы конфигурации sshd на всех хостах идентичны. Вы можете просмотреть конфигурацию: http://pastebin.com/YdLm8iWx

Вывод ssh -vvv доступен по адресу: http://pastebin.com/WQqurUZm

Если sshd logging установлен на VERBOSE, вывод, который происходит при попытке подключения, находится здесь: http://pastebin.com/i0SEtLU6

Я повторно сгенерировал ключи несколько раз, но безрезультатно, и, поскольку сегодня я настроил двух других пользователей с ключами от того же хоста, я не думаю, что это просто ключевая проблема. А если это так, я не понимаю, как, поскольку каждый раз я выполнял одну и ту же процедуру.

Теперь у меня sshd работает с loglvel DEBUG; вы можете просмотреть журналы попытки использования открытого ключа ssh: http://pastebin.com/KAcqWHQh начиная со строки 22.

Решение: причина оказалась в том, что учетная запись пользователя была заблокирована на сервере. Сначала я не обращал внимания на это, потому что учетная запись пользователя была заблокирована и на старом сервере, но ssh по-прежнему функционировал правильно.

Я обнаружил это частично, установив "Use PAM no" в конфигурации sshd. файл, перезапустив sshd и снова попробовав ssh. Одной из записей журнала было сообщение о том, что «учетная запись заблокирована». После разблокировки учетной записи я смог успешно подключиться по ssh с помощью публичного ключа.

Спасибо

Проверьте права доступа к файлу authorized_keys. Он должен принадлежать пользователю, которому принадлежит учетная запись, но, что более важно, вы не должны иметь возможность читать или писать в него из другой учетной записи:

$ chown user:group ~user/.ssh/authorized_keys
$ chmod 600 ~user/.ssh/authorized_keys

Просто даю «правильный» ответ, хотя я отредактировал исходный вопрос, чтобы отразить решение ... но вот.

Решение: причина оказалась в том, что учетная запись пользователя была заблокирована на сервере. Сначала я не обращал внимания на это, потому что учетная запись пользователя была заблокирована и на старом сервере, но ssh по-прежнему функционировал правильно.

Я обнаружил это частично, установив "Use PAM no" в конфигурации sshd. файл, перезапустив sshd и снова попробовав ssh. Одной из записей журнала было сообщение о том, что «учетная запись заблокирована». После разблокировки учетной записи я смог успешно подключиться по ssh с помощью публичного ключа.