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

Публичные ключи SSH не работают для всех пользователей на одном сервере

У меня есть VPS, на котором у меня несколько «пользователей» (все я, для разных вещей). Я настроил свои локальные открытые ключи SSH и использовал ssh-copy-id для копирования на все из них. Однако я могу войти в систему без запроса пароля только для некоторых из них, и это сводит меня с ума.

Я использовал ssh -v user@host.ip.address для одного, который работает, а другой - нет. Выходной текст ТОЧНО одинаковый до конца:

Тот, который работает, выглядит так:

debug1: Next authentication method: publickey
debug1: Offering RSA public key: /home/tom/.ssh/id_rsa
debug1: Server accepts key: pkalg ssh-rsa blen 279
debug1: Authentication succeeded (publickey).
Authenticated to xxx.xxx.xxx.xxx ([xxx.xxx.xxx.xxx]:22).
debug1: channel 0: new [client-session]
debug1: Entering interactive session.
debug1: Sending environment.
debug1: Sending env LANG = en_US.UTF-8

Тот, который выглядит не так:

debug1: Next authentication method: publickey
debug1: Offering RSA public key: /home/tom/.ssh/id_rsa
debug1: Authentications that can continue: publickey,password,keyboard-interactive
debug1: Trying private key: /home/tom/.ssh/id_dsa
debug1: Trying private key: /home/tom/.ssh/id_ecdsa
debug1: Next authentication method: keyboard-interactive
debug1: Authentications that can continue: publickey,password,keyboard-interactive
debug1: Next authentication method: password

Я дважды проверил, что права доступа к ключу и файлу в authorized_keys одинаковы для каждого пользователя и папки .ssh, но по какой-то причине сервер не принимает один и тот же точный ключ, который является тем же самым ключом, который хранится на сервере.

Я попытался перезапустить демон sshd, а также сервер.

Не совсем самостоятельный ответ, но недостаточно репутации для комментария к ответу Зоредаш.

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

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

Я считаю, что вам следует проверить свой authorized_keys файл на сервере. В большинстве систем, где я видел ssh-copy-id, это очень простой скрипт без большого количества проверок ошибок.

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

Для достижения наилучших результатов при использовании ssh-copy-id вы должны использовать опцию -i, чтобы явно определить публичную часть ключа, который вы хотите загрузить. Если вы не укажете параметр -i, он выберет первый файл из нескольких мест, в том числе из сокета агента SSH.

Потратьте несколько секунд, чтобы проверить сценарий ssh-copy-id в вашей системе, и вы почти наверняка поймете, о чем я говорю.