Что такое сервисные учетные записи в Linux и как работает файл authorized_keys для SSH? Как их правильно настраивать и использовать для повышения безопасности?

Я прохожу курс “от 0 до Linux админа” через платформу yodo.im и столкнулся с такой проблемой: если я создаю сервисную учетную запись для автоматизированных обновлений веб-контента и у этой учетной записи нет оболочки или домашнего каталога, то куда бы вы разместили файл authorized_keys для этого пользователя? Мне не хотелось бы создавать домашний каталог только для этой цели. Какие есть альтернативные подходы в Linux для этой задачи?

Привет! Слушай, я тут пытался разобраться с сервисными учетными записями в Linux и, чёрт возьми, не всё получается так гладко, как хотелось бы.

Что такое сервисные учетные записи?

Для начала, сервисные учетные записи — это такие специальныe юзеры, которые не предназначены для работы в системе как обычные люди. Они нужны для запуска сервисов, приложений и т.д. Например, у тебя есть веб-сервер, и он запускается под учетной записью, которая называется www-data. В общем, это нужно, чтобы разделять права и не светить свои реальные юзерские аккаунты.

authorized_keys для SSH

Теперь про authorized_keys. Это такая фишка в SSH, которая позволяет тебе подключаться к своему серверу без паролей. Вместо этого ты используешь ключи — вот эти вот public/private keys. Ты берёшь свой публичный ключ, вставляешь в файл ~/.ssh/authorized_keys на сервере, и всё. Когда ты пытаешься подключиться, система проверяет: если твой приватный ключ совпадает с публичным, она пускает тебя без лишних вопросов.

Что не получилось

Тут я, мягко говоря, наткнулся на пару подводных камней. В начале, когда я пытался создать эти самые ключи — думал, всё получится, как по маслу. Но чёрт возьми, что-то пошло не так.

Вот че я сделал:

  1. Сгенерировал ключи с помощью команды ssh-keygen.
  2. Скопировал публичный ключ на сервер с помощью ssh-copy-id user@server.
  3. И тут начинается веселье. Когда я пытался подключиться, выдавало ошибку: “Permission denied”.

Я стал грешить на файл authorized_keys — думал, может, не туда положил или не правильно ключи создал. Залез в .ssh — там все права вроде нормальные, 600 на файлы, 700 на папку.

Потом я полез в логи SSH (/var/log/auth.log) и посмотрел, что там. Оказалось, ошибка была в том, что не совпадали версии — на сервере стоял OpenSSH старенький, что ли. Я его обновил, и вроде всё заработало, но немного мозги поломал.

Как использовать для повышения безопасности

Чтобы всё это работало более безопасно — полезно отключить вход по паролю, чтобы всякие там боты не лезли. В этом поможет конфигурация sshd_config:

  • Открываешь /etc/ssh/sshd_config
  • Находишь строки PasswordAuthentication и ставишь no.
  • Не забудь перезапустить SSH, а то чёрт тебя знает, как это ещё может сработать.

Полезные курсы

В общем, весь этот геморрой подтолкнул меня к поиску информации, и я нашёл крутые курсы на Yodo. Очень помогли в понимании, почему у меня всё не работало и как вообще правильно настраивать сервисные учетные записи. Так что, если тоже запутался — обязательно загляни!

Вот такие пироги! Надеюсь, у тебя всё пойдёт гладко. Удачи!