linux-labs

← Практика

SSH не пускает по ключу

Сломай-почини · Среднее · 20 мин · 150 баллов

SSH не пускает по ключу

Для пользователя deploy настроен вход по SSH-ключу: публичный ключ уже лежит в его ~/.ssh/authorized_keys. Но при подключении сервер игнорирует ключ и просит пароль (а парольный вход запрещён) — войти не получается.

Задача

Сделай так, чтобы:

  1. пользователь deploy пускался на сервер по ключу, без пароля;
  2. права на ~/.ssh и authorized_keys были корректными — sshd придирчив к ним;
  3. конфигурация sshd разрешала вход по ключу и была применена (служба перезагружена).

Подсказки по подходу

  • sshd отказывает в ключе при слишком открытых правах: каталог ~/.ssh должен быть 700, файл authorized_keys600, оба — во владении самого пользователя.
  • Конфиг /etc/ssh/sshd_config: смотри PubkeyAuthentication, AuthorizedKeysFile и возможные Match-блоки.
  • Лучший диагност — лог сервера при попытке входа: journalctl -u ssh (или sshd).
  • После правки конфига нужен systemctl reload ssh (синтаксис проверь через sshd -t).

Всё нужное уже установлено. Интернет на машине отсутствует — и не понадобится.

Подсказки

Подсказка 1

Загляни в лог сервера во время попытки входа: sudo journalctl -u ssh -n 30. Сообщение вроде «Authentication refused: bad ownership or modes» прямо укажет на права.

Подсказка 2

Проверь права: ls -ld ~deploy/.ssh (нужно 700) и ls -l ~deploy/.ssh/authorized_keys (нужно 600), владелец — deploy. Затем конфиг: sudo sshd -T | grep -i pubkey — включён ли вход по ключу.

Подсказка 3

Почини права: sudo chmod 700 ~deploy/.ssh; sudo chmod 600 ~deploy/.ssh/authorized_keys; sudo chown -R deploy:deploy ~deploy/.ssh. Если в sshd_config стоит PubkeyAuthentication no — поставь yes, проверь sudo sshd -t и sudo systemctl reload ssh.

Поднимет вашу личную эфемерную Linux-ВМ для задания — обычно пара секунд. После работы её можно остановить.