Tengo un servidor git de desarrollo que se implementa en un servidor en vivo cuando live
se empuja la rama. Cada usuario tiene su propio inicio de sesión y, por lo tanto, el post-receive
enlace que realiza la implementación en vivo se ejecuta bajo su propio usuario.
Como no quiero tener que mantener las claves públicas de los usuarios como claves autorizadas en el servidor remoto activo, he creado un conjunto de claves que 'pertenecen al sistema git para agregar a servidores remotos en vivo (en el post-receive
gancho que estoy usando $GIT_SSH
configurar la clave privada con la -i
opción).
Mi problema es que, debido a que todos los usuarios pueden querer implementar para vivir, la clave privada del sistema git debe ser al menos legible en grupo y a SSH realmente no le gusta esto.
Aquí hay una muestra del error:
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
He mirado a mi alrededor esperando encontrar algo que obligue a ssh a seguir adelante con la conexión, pero no he encontrado nada más que personas que dicen ciegamente que no debes permitir el acceso a nada más que a un solo usuario.
fuente
Usted PUEDE utilizar archivos de identidad legibles grupo, a menos que usted es el propietario de la clave. Entonces, simplemente configure el archivo de identidad para que sea propiedad, por ejemplo, del usuario raíz y luego todos los usuarios de su repositorio git estén listos para funcionar.
Una buena ventaja de esto es que no necesita sudo: la solución será más simple.
Tenga en cuenta que esto se encontrará nuevamente con el problema original si está utilizando root para enviarlo a su repositorio de git.
fuente
La clave privada debe permanecer privada. No debe permitir que nadie lo lea.
en el
post-receive
script de gancho, intente algo como esto:fuente
ssh-keygen
,ssh-copy-id user@prod
. En el producto:chmod 700 ~/.ssh
,chmod 600 ~/.ssh/authorized_keys
.git checkout...
(en el producto).post-receive
gancho (máquina de desarrollo) es ejecutado por el usuario que está presionando un cambio (por lo tanto, con el permiso de los usuarios) para que todos tengan claves diferentes, no puedo evitar qué usuario será. Hay dospost-receive
ganchos en dos servidores diferentes en acción.