Gitlab post-receive hook主机密钥验证失败

时间:2016-05-26 08:42:26

标签: git gitlab githooks git-post-receive

我有3台服务器:

werkstation.example.com -> server where the gitlab repository is cloned & for changing the files fom the repository
git.example.com -> gitab server with repository "tomcat"
docker.example.com -> server where the files will be copied with git hook

我的git hook:

#!/bin/sh

read oldrev newrev refname

REPO="git@git.example.com:michaelv1234/tomcat.git"
BRANCH=`echo $refname | sed -n 's/^refs\/heads\///p'`
BRANCH_DIR="/home/michael"
SSH_DEST="michael@docker.example.com"

##
# Instantiate the branches on the puppetmaster
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

但我仍然收到这个错误:

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 michael@docker.example.com /home/michael/master
remote: Host key verification failed.
To git@git.example.com:michaelv1234/tomcat.git
0032c02..6e8ef97  master -> master
Branch master set up to track remote branch master from origin.

我已经删除了每台服务器上的“known_hosts”文件,但我仍然收到错误

2 个答案:

答案 0 :(得分:1)

解决方案: 在Gitlab服务器上:

sudo su - git
ssh-keygen
ssh-copy-id michael@docker.example.com
ssh michael@docker.example.com

答案 1 :(得分:0)

docker.example.com上的SSH密钥是否发生变化?

您收到remote: Host key verification failed.错误,因为docker.example.com计算机的SSH主机密钥与git.example.com上known_hosts文件中包含的密钥不匹配。

在git.example.com计算机上搜索known_hosts个文件,看看它是否包含docker.example.com的条目。如果找到条目,请删除并重试该操作(或者运行ssh-keygen -R docker.example.com >> /path/to/known_hosts以更新该主机的密钥)。