У меня есть git-сервер для разработки, который развертывается на работающем сервере, когда live
ветка отправляется на. У каждого пользователя есть свой логин и, следовательно, post-receive
хук, который делает живое развертывание, запускается под своим собственным пользователем.
Поскольку я не хочу поддерживать открытые ключи пользователей в качестве авторизованных ключей на удаленном живом сервере, я создал набор ключей, принадлежащих системе git, для добавления к удаленным живым серверам (в post-receive
ловушке, которую я использую $GIT_SSH
установить закрытый ключ с -i
опцией).
Моя проблема заключается в том, что из-за того, что все пользователи могут захотеть развернуть их в режиме реального времени, закрытый ключ системы git должен быть, по крайней мере, читаемым для группы, а SSH действительно не нравится.
Вот пример ошибки:
XXXX@XXXX /srv/git/identity % ssh -i id_rsa XXXXX@XXXXX
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0640 for 'id_rsa' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
bad permissions: ignore key: id_rsa
Я оглянулся вокруг, ожидая найти что-то, что заставит ssh просто установить соединение, но я не нашел ничего, кроме людей, которые слепо говорили, что вы не должны разрешать доступ ни к чему, кроме одного пользователя.
источник
Вы МОЖЕТЕ использовать групповые читаемые идентификационные файлы, ЕСЛИ ВЫ не являетесь владельцем ключа. Итак, просто задайте файл идентификации, который будет принадлежать, например, пользователю root, и тогда все ваши пользователи git-репозитория настроены на работу.
Хорошим преимуществом является то, что вам не нужен sudo - решение будет более простым.
Обратите внимание, что это снова столкнется с исходной проблемой, если вы используете root для продвижения к вашему git-репо.
источник
Закрытый ключ должен оставаться закрытым. Вы не должны позволять никому читать это.
в
post-receive
скрипте ловушек попробуйте что-то вроде этого:источник
ssh-keygen
,ssh-copy-id user@prod
. На прод:chmod 700 ~/.ssh
,chmod 600 ~/.ssh/authorized_keys
.git checkout...
(на prod).post-receive
Крюк (DEV машина) запускается пользователем , который толкает изменение (поэтому под разрешением пользователей) , так все они будут иметь разные ключи, я не могу , какой пользователь будет. Есть дваpost-receive
хука на двух разных серверах в действии.