Проверка подлинности с помощью открытого ключа SSH - сервер принимает ключ, но аутентификация не выполняется

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

debug1: Host 'xxxxx' is known and matches the RSA host key.
debug1: Found key in /home/xxx/.ssh/known_hosts:3
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue:
publickey,gssapi-keyex,gssapi-with-mic,password
debug1: Next authentication method: gssapi-keyex
debug1: No valid Key exchange context
debug1: Next authentication method: gssapi-with-mic
debug1: Unspecified GSS failure.  Minor code may provide more information
Credentials cache file '/tmp/krb5cc_1000' not found
debug1: Unspecified GSS failure.  Minor code may provide more information
Credentials cache file '/tmp/krb5cc_1000' not found
debug1: Unspecified GSS failure.  Minor code may provide more information
debug1: Unspecified GSS failure.  Minor code may provide more information
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /home/xxx/.ssh/id_rsa
debug1: Server accepts key: pkalg ssh-rsa blen 279
debug1: Authentications that can continue:
publickey,gssapi-keyex,gssapi-with-mic,password
debug1: Offering RSA public key: email@address.com
debug1: Authentications that can continue:
publickey,gssapi-keyex,gssapi-with-mic,password
debug1: Trying private key: /home/xxx/.ssh/id_dsa
debug1: Trying private key: /home/xxx/.ssh/id_ecdsa
debug1: Next authentication method: password

Следующая строка не имеет смысла для меня

Server accepts key: pkalg ssh-rsa blen 279

Поскольку кажется, что сервер считает, что открытый ключ совершенно корректен, почему же он продолжает аутентификацию по паролю вместо аутентификации пользователя?

3 ответа

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

Например, небезопасные разрешения для пользователей домашних или.ssh каталогов.

В моем случае проблема заключалась в том, что пользователь пытался подключиться от имени пользователя root, и я отключил root ssh login (что, вероятно, должен делать каждый). Поэтому убедитесь, что ваш друг пытается подключиться через правильную учетную запись пользователя без полномочий root.

Я недавно испытал это с интерфейсом Gerrit SSH. Проблема заключалась в том, что мой локальный агент SSH предлагал кучу разных ключей серверу Gerrit, и после некоторого ограничения сервер просто отказывался принимать дополнительные ключи (но все равно отвечал с Server accepts key). Я не знаю, относится ли это поведение к Gerrit или к общему OpenSSH.

Исправление состояло в том, чтобы принудительно выбрать правильный ключ в ~/.ssh/config:

Host gerrit.example.org
  IdentityFile ~/path/to/my_key
  IdentitiesOnly yes

Убедившись, что ~/path/to/my_key.pub существует (может быть создан с ssh-keygen -f ~/path/to/my_key -y > ~/path/to/my_key.pub), агент ssh мог предоставить ключ без необходимости повторного ввода ключевой фразы, но не предоставил никаких других ключей.

Другие вопросы по тегам