Я прохожу курс “от 0 до Linux админа” через платформу yodo.im и столкнулся с такой проблемой: если я создаю сервисную учетную запись для автоматизированных обновлений веб-контента и у этой учетной записи нет оболочки или домашнего каталога, то куда бы вы разместили файл authorized_keys для этого пользователя? Мне не хотелось бы создавать домашний каталог только для этой цели. Какие есть альтернативные подходы в Linux для этой задачи?
Привет! Слушай, я тут пытался разобраться с сервисными учетными записями в Linux и, чёрт возьми, не всё получается так гладко, как хотелось бы.
Что такое сервисные учетные записи?
Для начала, сервисные учетные записи — это такие специальныe юзеры, которые не предназначены для работы в системе как обычные люди. Они нужны для запуска сервисов, приложений и т.д. Например, у тебя есть веб-сервер, и он запускается под учетной записью, которая называется www-data. В общем, это нужно, чтобы разделять права и не светить свои реальные юзерские аккаунты.
authorized_keys для SSH
Теперь про authorized_keys. Это такая фишка в SSH, которая позволяет тебе подключаться к своему серверу без паролей. Вместо этого ты используешь ключи — вот эти вот public/private keys. Ты берёшь свой публичный ключ, вставляешь в файл ~/.ssh/authorized_keys на сервере, и всё. Когда ты пытаешься подключиться, система проверяет: если твой приватный ключ совпадает с публичным, она пускает тебя без лишних вопросов.
Что не получилось
Тут я, мягко говоря, наткнулся на пару подводных камней. В начале, когда я пытался создать эти самые ключи — думал, всё получится, как по маслу. Но чёрт возьми, что-то пошло не так.
Вот че я сделал:
- Сгенерировал ключи с помощью команды
ssh-keygen. - Скопировал публичный ключ на сервер с помощью
ssh-copy-id user@server. - И тут начинается веселье. Когда я пытался подключиться, выдавало ошибку: “Permission denied”.
Я стал грешить на файл authorized_keys — думал, может, не туда положил или не правильно ключи создал. Залез в .ssh — там все права вроде нормальные, 600 на файлы, 700 на папку.
Потом я полез в логи SSH (/var/log/auth.log) и посмотрел, что там. Оказалось, ошибка была в том, что не совпадали версии — на сервере стоял OpenSSH старенький, что ли. Я его обновил, и вроде всё заработало, но немного мозги поломал.
Как использовать для повышения безопасности
Чтобы всё это работало более безопасно — полезно отключить вход по паролю, чтобы всякие там боты не лезли. В этом поможет конфигурация sshd_config:
- Открываешь
/etc/ssh/sshd_config - Находишь строки
PasswordAuthenticationи ставишьno. - Не забудь перезапустить SSH, а то чёрт тебя знает, как это ещё может сработать.
Полезные курсы
В общем, весь этот геморрой подтолкнул меня к поиску информации, и я нашёл крутые курсы на Yodo. Очень помогли в понимании, почему у меня всё не работало и как вообще правильно настраивать сервисные учетные записи. Так что, если тоже запутался — обязательно загляни!
Вот такие пироги! Надеюсь, у тебя всё пойдёт гладко. Удачи!