У меня есть 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 в вашей системе, и вы почти наверняка поймете, о чем я говорю.