Gancho pós-recebimento do Gitlab Falha na verificação da chave do host

1

Estou com três servidores:

werkstation.example.com - > servidor onde o repositório gitlab é clonado & para alterar os arquivos do repositório

git.example.com - > servidor gitab com repositório "tomcat"

docker.example.com - > servidor onde os arquivos serão copiados com git hook

Meu gancho git:

#!/bin/sh
read oldrev newrev refname

REPO="[email protected]:michaelv1234/tomcat.git"
BRANCH='echo $refname | sed -n 's/^refs\/heads\///p''
BRANCH_DIR="/home/michael"
SSH_DEST="[email protected]"

if [ "$newrev" -eq 0 ] 2> /dev/null; then
# branch is being deleted
echo "Deleting remote branch $SSH_DEST $BRANCH_DIR/$BRANCH"
echo "$SSH_DEST" /bin/sh
ssh  "$SSH_DEST" /bin/sh <<-EOF
            cd "$BRANCH_DIR" && rm -rf $BRANCH
    EOF
else
    # branch is being updated
    echo "Updating remote branch $SSH_DEST $BRANCH_DIR/$BRANCH"
    ssh "$SSH_DEST" /bin/sh <<-EOF
            { cd "$BRANCH_DIR/$BRANCH" || mkdir -p "$BRANCH_DIR/$BRANCH" && cd "$BRANCH_DIR/$BRANCH"; } \
            && { git fetch origin && git reset --hard origin/$BRANCH || { git clone "$REPO" ./ && git checkout $BRANCH; }; }
    EOF
fi

Mas ainda estou recebendo este erro:

michael@werkstation:~/tomcat$ git push -u origin master
Counting objects: 5, done.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 254 bytes | 0 bytes/s, done.
Total 3 (delta 1), reused 0 (delta 0)
remote: Updating remote branch [email protected] /home/michael/master
remote: Host key verification failed.
To [email protected]:michaelv1234/tomcat.git
0032c02..6e8ef97  master -> master
Branch master set up to track remote branch master from origin.

Arquivos de direitos & diretórios:

custom_hooks directory:
drwxr-xr-x 2 git git 4096 May 27 12:05 custom_hooks

post-receive file in custom_hooks:
rwxr-xr-x 1 git git 1435 May 27 12:05 post-receive

Eu já removi o arquivo "known_hosts" em todos os servidores, mas ainda estou recebendo o erro

    
por Fred Bongers 27.05.2016 / 11:00

2 respostas

0

Quando uma conexão SSH é inicializada, o servidor se autentica no cliente. O cliente verifica se a chave já está no arquivo known_hosts. Caso contrário, irá avisar o usuário. É por isso que, na primeira conexão SSH, você recebe uma solicitação perguntando se deseja aceitar uma chave com impressão digital xyz. A chave pública dos servidores é então gravada no arquivo known_hosts.

Se você nunca tiver SSH ligado ao servidor, ele não estará no arquivo known_hosts e as conexões automáticas falharão. A maneira mais fácil de contornar esse problema é conectá-lo ao servidor como o usuário que deve sintonizar o comando git e responder "sim" no prompt.

    
por 27.05.2016 / 11:12
0

Solução: No servidor do Gitlab:

sudo su - git
ssh-keygen
ssh-copy-id [email protected]
ssh [email protected]
    
por 02.06.2016 / 10:01