Як явно не було зазначено, 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
завершення!