Як явно не було зазначено, sshd за замовчуванням дуже суворий щодо дозволів на authorized_keysфайли. Отже, якщо authorized_keysвін може бути призначений для запису для когось, крім користувача, або його може зробити хтось, хто не є користувачем, він відмовиться від автентифікації (якщо не налаштовано sshd StrictModes no)
Що я маю на увазі під "можна зробити доступним для запису", це те, що якщо будь-який з батьківських каталогів є доступним для запису для когось, крім користувача, користувачі, дозволені змінювати ці каталоги, можуть почати змінювати дозволи таким чином, щоб вони могли змінювати / замінювати дозволені_кейси.
Крім того, якщо /home/username/.sshкаталог не належить користувачеві, і, таким чином, у користувача немає дозволу на читання ключа, ви можете зіткнутися з проблемами:
drwxr-xr-x 7 jane jane 4096 Jan 22 02:10 /home/jane
drwx------ 2 root root 4096 Jan 22 03:28 /home/jane/.ssh
Зауважте, що jane не має власного .sshфайлу. Виправте це через
chown -R jane:jane /home/jane/.ssh
Такі види дозволів файлової системи не відображатимуться ssh -v, і вони навіть не відображатимуться в журналах sshd (!), Поки ви не встановите рівень журналу DEBUG.
- Редагувати
/etc/ssh/sshd_config. Ви хочете, щоб рядок, який читається LogLevel DEBUGтам десь. Перезавантажте SSH-сервер за допомогою механізму, який надає дистрибутив. ( service sshd reloadна RHEL / CentOS / Scientific.) Витончене перезавантаження не скасує існуючі сеанси.
- Спробуйте ще раз підтвердити автентифікацію.
- Опрацюйте, куди ходять ваші авторизовані журнали, і прочитайте їх. (IIRC,
/var/log/auth.logна базі Debian дистрибутивів; /var/log/secureна RHEL / CentOS / Наук.)
Набагато простіше розібратися, що сталося не так з виходом налагодження, який включає помилки дозволу файлової системи. Не забудьте повернути зміни до /etc/ssh/sshd_configзавершення!