Gitlab 自动部署已停止工作,服务器日志中出现“找不到匹配的主机密钥类型”错误
Posted
技术标签:
【中文标题】Gitlab 自动部署已停止工作,服务器日志中出现“找不到匹配的主机密钥类型”错误【英文标题】:Gitlab autodeploy has stopped working, "no matching host key type found" error in server logs 【发布时间】:2021-10-25 19:32:59 【问题描述】:我有 .gitlab-ci.yml:
image: php:latest
deploy:
stage: deploy
only:
- master
before_script:
- 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )'
- eval $(ssh-agent -s)
- echo "$SSH_KEY" | ssh-add -
- mkdir -p ~/.ssh
- chmod 700 ~/.ssh
- ssh-keyscan $SSH_HOST > ~/.ssh/known_hosts
- chmod 644 ~/.ssh/known_hosts
script:
- ssh $SSH_USER@$SSH_HOST "cd $SSH_PATH && git pull origin master"
它工作了几个月,但大约一周前停止工作,尽管服务器上没有任何变化。
管道失败的作业日志:
# mydomainproject.com:22 SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
$ chmod 644 ~/.ssh/known_hosts
$ ssh $SSH_USER@$SSH_HOST "cd $SSH_PATH && git pull origin master"
ssh: connect to host mydomainproject.com port 22: Connection refused
Cleaning up file based variables
ERROR: Job failed: exit code 1
/var/log/auth.log 在服务器上:
sshd[23927]: Connection closed by 35.227.7.98 port 50036 [preauth]
sshd[23925]: Connection closed by 35.227.7.98 port 50038 [preauth]
sshd[23924]: Connection closed by 35.227.7.98 port 50040 [preauth]
sshd[23928]: Unable to negotiate with 35.227.7.98 port 50042: no matching host key type found. Their offer: sk-ecdsa-sha2-nistp256@openssh.com [preauth]
sshd[23926]: Unable to negotiate with 35.227.7.98 port 50044: no matching host key type found. Their offer: sk-ssh-ed25519@openssh.com [preauth]
我已阅读 this 并尝试编辑 .gitlab-ci.yml:
script:
- ssh -oHostKeyAlgorithms=+sk-ecdsa-sha2-nistp256@openssh.com $SSH_USER@$SSH_HOST "cd $SSH_PATH && git pull origin master"
没用,结果还是一样。
我不明白出了什么问题以及它为什么停止工作。
【问题讨论】:
【参考方案1】:你也试过ssh -oHostKeyAlgorithms=+ssh-dss
吗?
这是 OpenSSH 旧版 documentation 中描述的一个已知问题,即使出于安全原因不建议使用此解决方法。
【讨论】:
是的,这是我尝试的第一件事。结果是一样的。 从 gitlab runner 到目标服务器的ssh -vvv
给了你一些提示? ~/.ssh/config
客户端发生了变化?升级我的笔记本电脑后,我遇到了类似的问题,我解决了将PubkeyAcceptedKeyTypes ssh-rsa,rsa-sha2-256,rsa-sha2-512
添加到~/.ssh/config
文件。
> 从 gitlab runner 到目标服务器的 ssh -vvv 给你一些提示?不,只是“连接被拒绝”。 > ~/.ssh/config 客户端改变了吗?不,它没有。 > 将 PubkeyAcceptedKeyTypes ssh-rsa,rsa-sha2-256,rsa-sha2-512 添加到我试过的~/.ssh/config 文件中,没有变化。【参考方案2】:
如果其他人有这个问题,对我来说它有助于手动指定主机密钥,而不是尝试让 gitlab 运行程序使用 ssh-keyscan 即时确定它。
【讨论】:
您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center。以上是关于Gitlab 自动部署已停止工作,服务器日志中出现“找不到匹配的主机密钥类型”错误的主要内容,如果未能解决你的问题,请参考以下文章