Вход на сервер под Apache
Такая ситуация: есть сервер, сверху стоит веб сервер. Учётка root отключена для входа на сервер по паролю и ей я не пользуюсь. SSH доступ только локальный (сервер в комнате стоит). Есть просто пользователь n3cr0x под ним и работаю в основном.
На днях установил Гит, всё настроил. Сделал пару ключей, публичный закинул на Гит. В общем скрипт пуша работает от apache можно сказать. Всё лежит в /var/www/.ssh/.. Вот как шёл процесс:
sudo mkdir -p /var/www/.ssh sudo chown -R apache:apache /var/www/.ssh sudo chmod 700 /var/www/.ssh sudo -Hu apache nano /var/www/.ssh/config Host github.com User git IdentityFile /var/www/.ssh/id_ed25519 StrictHostKeyChecking no UserKnownHostsFile /var/www/.ssh/known_hosts sudo chmod 600 /var/www/.ssh/config sudo -Hu apache ssh-keyscan github.com >> /var/www/.ssh/known_hosts
В общем на сервере я могу от apache юзера делать всё что хочу, мне это нужно в первую очередь чтобы не нарушать права доступа у веб сервера. Удобно. Но возник вопрос, а могу ли я например слить что-то с каталога веб сервера или залить через scp ??? Я создал пару ключей на локальном ПК, закинул их по пути где лежит пара для n3cr0x пользователя. Далее под ним залил через scp всё на сервер в /tmp, далее под apache перенёс содержимое публичного ключа в /var/www/.ssh/authorized_keys перезапустил ssh сервис и попробовал подключиться к серверу указав путь к приватному ключу на локальном ПК, но в логах что-то невнятное...
Connection closed by authenticating user apache 192.168.178.21 port 52158 [preauth]
В тенях у Апача естественно нет пароля, но в системе-то под ним работать можно, вопрос, почему нельзя от его имени подключиться по scp и что-то залить или слить из его же директорий. Если у директорий стоит apache:apache права доступа, то не хочу менять на n3cr0x:apache хоть пользователь мой и принадлежит группе apache.
ВОТ ТАК НЕ ПУСКАЕТ:
n3cr0x-PC% ssh -i /home/n3cr0x/Data/Documents/Linux/SSH/nas-apache : Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
А ВОТ ТАК ПУСКАЕТ:
n3cr0x-PC% ssh -i /home/n3cr0x/Data/Documents/Linux/SSH/nas-server Last login: Fri Jul 5 13:44:51 2024 from 192.168.178.21
Так как у apache нет дом каталога и пароля никогда не было, да и отлично, то место для хранения публичных ключей я имею право выбирать сам (или нет), если для Гита это работает, то возможно и для apache пользователя должно работать?
Есть какие-то варианты решения проблемы или это вообще невозможно?
Я например не понимаю как заставить apache идти по /var/www/.ssh/ и читать authorized_keys...
Так как у него нет дом каталога, то и найти путь он не может, а передать его ему нет возможности. Но при этом Гит каким-то образом подключается к серверу по apache и подобной проблемы не испытывает.
Я создавал такой конфиг:
[n3cr0x@NAS-SERVER ~]$ sudo -Hu apache cat /var/www/.ssh/config Host github.com User git IdentityFile /var/www/.ssh/id_ed25519 StrictHostKeyChecking no UserKnownHostsFile /var/www/.ssh/known_hosts
И на основании этого конфига Гит понимает где что лежит и через apach делает всё что ему нужно и доступ у apache к данным директориям и файлам настроен правильно. Но я не понимаю почему создав пару ключей и прописав публичный ключ в /var/www/.ssh/authorized_keys и пытаясь войти по ssh на сервер у меня не получается авторизоваться.
Единственная логичная причина, это то, что ssh не видит этого пути...
- Для комментирования войдите или зарегистрируйтесь
.
Читай ман
sshd
.Первое домашнее задание: правильно (!) вставить секцию, для чтения публичного ключа пользователя из [например] файла
/etc/ssh/pkis/apache
.:wq
--
Live free or die