#Что происходит и когда это важно
Пароль может работать, но вход по ключу возвращает Permission denied (publickey). Клиент предлагает нужный ключ, а сервер его не принимает.
#Возможные причины и как их отличить
| Возможная причина | Как узнать | Что делать |
|---|---|---|
Изменился путь домашнего каталогаДанные NSS указывают на новое место, а .ssh остался в старом. | getent passwd и расположение файлов не совпадают. | Перенести ключи штатным способом после резервной копии. |
| Нарушены права/владелецПри копировании права наследовались от другого тома. | Журнал sshd содержит bad ownership/modes. | Исправить только разрешения целевого пути. |
| Новый том не монтируется при входеСетевой или шифрованный home ещё недоступен sshd. | findmnt не показывает нужный путь или он пуст. | Проверить монтирование и доступность каталога. |
#Пошаговая диагностика и исправление
- Сохраните способ доступаНе отключайте парольный вход, пока ключ не проверен, и оставьте консоль провайдера или уже работающий SSH-сеанс. Не копируйте личный закрытый ключ на сервер: серверу нужен только публичный ключ в authorized_keys.
- Определите настоящий homeНа сервере через консоль выполните
getent passwd ИМЯ_ПОЛЬЗОВАТЕЛЯи сравните домашний каталог с новым местом. Проверьте, что файловая система смонтирована (findmnt -T /НОВЫЙ/HOME). Если том не подключён, сначала восстановите его монтирование. - Проверьте расположение и праваДля нужного home выполните
namei -l /НОВЫЙ/HOME/.ssh/authorized_keysиls -lэтого файла, заменив путь реальным. Отсутствие файла отличается от ошибки прав. Если файл отсутствует, найдите резервную копию публичных ключей, не создавайте пустой файл с неизвестным содержимым. - Проверьте фактический путь sshdАдминистратор с
sudo sshd -Tсмотрит AuthorizedKeysFile, а при правилах Match уточняет их черезsshd -T -C. На сервере может использоваться централизованный сервис ключей, и home вовсе не должен содержать authorized_keys. - Сверьте предлагаемый ключ клиентаНа клиенте выполните
ssh -v пользователь@серверс действительным именем. ИщитеOffering public keyи далееServer accepts keyили отказ. Никогда не публикуйте приватный ключ или весь вывод с личными адресами. - Восстановите только требуемый файлЕсли в новом home действительно нет
authorized_keys, администратор после сохранения старого home переносит публичные ключи, проверяет владельца и права только на.sshи файл. Если исходныйauthorized_keysсодержит несколько пользователей, не перезаписывайте его одним ключом. - Проверьте вход до отключения запасных способовОткройте новый SSH-сеанс, убедитесь, что ключ принят и домашний каталог доступен. Лишь затем обсуждайте изменение парольной политики и закрытие временного доступа. При отказе не закрывайте прежний доступ, сохраните диагностическую строку из журнала и обратитесь к администратору.
#Команды из инструкции с пояснениями
getent passwd ИМЯ_ПОЛЬЗОВАТЕЛЯfindmnt -T /НОВЫЙ/HOMEnamei -l /НОВЫЙ/HOME/.ssh/authorized_keysssh -v пользователь@сервер#Как проверить результат
Новый сеанс открывается по тому же ключу, сервер читает верный authorized_keys из согласованного пути, права доступа не стали шире.
#Если проблема не устранена
Если журнал показывает другой механизм авторизации, выясняйте его настройку у администратора. Если новый home недоступен из-за NFS, не исправляйте это установкой sshd StrictModes no.