Eu tenho um servidor git de desenvolvimento que é implantado em um servidor ativo quando a live
ramificação é enviada para. Cada usuário tem seu próprio logon e, portanto, o post-receive
gancho que faz a implantação ao vivo é executado sob seu próprio usuário.
Como não quero manter as chaves públicas dos usuários como chaves autorizadas no servidor ativo remoto, criei um conjunto de chaves que pertencem ao sistema git para adicionar aos servidores ativos remotos (no post-receive
gancho, estou usando $GIT_SSH
para definir a chave privada com a -i
opção).
Meu problema é que, como todos os usuários podem querer implantar para viver, a chave privada do sistema git precisa ser pelo menos legível por grupo e o SSH realmente não gosta disso.
Aqui está uma amostra do erro:
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
Eu olhei em volta, esperando encontrar algo para forçar o ssh a continuar com a conexão, mas não encontrei nada além de pessoas dizendo cegamente que você não deveria permitir acesso a nada além de um único usuário.
fonte
Você PODE usar arquivos de identidade legíveis em grupo, A menos que seja o proprietário da chave. Portanto, basta definir o arquivo de identidade como pertencente, por exemplo, ao usuário root e, em seguida, todos os usuários do repositório git.
Uma boa vantagem disso é que você não precisa do sudo - a solução será mais simples.
Observe que isso funcionará novamente no problema original se você estiver usando o root para enviar para o seu repositório git.
fonte
A chave privada deve permanecer privada. Você não deve permitir que ninguém o leia.
no
post-receive
script hook, tente algo como isto:fonte
ssh-keygen
,ssh-copy-id user@prod
. Sobre o prod:chmod 700 ~/.ssh
,chmod 600 ~/.ssh/authorized_keys
.git checkout...
(no prod).post-receive
gancho (máquina de desenvolvimento) é executado pelo usuário que está pressionando uma alteração (portanto, sob a permissão do usuário), para que todos tenham chaves diferentes, não posso ajudar qual usuário será. Existem doispost-receive
ganchos em dois servidores diferentes em ação.