You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Gitlab CI/CD连接远程VPS失败:连接被拒与主机密钥不匹配问题求解

解决GitLab CI/CD无法连接远程VPS的问题

问题根源是GitLab CI使用的Ubuntu镜像中,OpenSSH客户端默认仅提供sk-ecdsa-sha2-nistp256@openssh.com、sk-ssh-ed25519@openssh.com这类基于安全密钥的主机密钥类型,而你的VPS的sshd服务未启用或不支持这些类型,导致密钥协商失败,连接被拒绝。

以下是两种快速解决方法:

方法一:在SSH命令中指定兼容的主机密钥算法

修改.gitlab-ci.yaml中的script部分,在ssh命令后添加-o HostKeyAlgorithms参数,指定VPS支持的密钥类型(可在VPS上执行ssh -Q hostkey查看支持的类型,常见兼容类型包括rsa-sha2-256、rsa-sha2-512、ecdsa-sha2-nistp256、ssh-ed25519):

image: ubuntu

before_script:
  - 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client git -y )'
  - eval $(ssh-agent -s)
  - echo "$SSH_KEY_VU2NW" | tr -d '\r' | ssh-add -
  - mkdir -p ~/.ssh
  - chmod 700 ~/.ssh
  - ssh-keyscan (domain name here) >> ~/.ssh/known_hosts
  - chmod 644 ~/.ssh/known_hosts

Test SSH:
  script:
  - ssh -o HostKeyAlgorithms=+rsa-sha2-256,rsa-sha2-512,ecdsa-sha2-nistp256 root@(IP address here)

方法二:通过SSH配置文件指定算法

在before_script中添加创建~/.ssh/config的步骤,统一配置目标主机的密钥算法:

image: ubuntu

before_script:
  - 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client git -y )'
  - eval $(ssh-agent -s)
  - echo "$SSH_KEY_VU2NW" | tr -d '\r' | ssh-add -
  - mkdir -p ~/.ssh
  - chmod 700 ~/.ssh
  - ssh-keyscan (domain name here) >> ~/.ssh/known_hosts
  - chmod 644 ~/.ssh/known_hosts
  # 添加SSH配置,指定兼容的主机密钥算法
  - echo "Host (IP address here)" >> ~/.ssh/config
  - echo "  HostKeyAlgorithms +rsa-sha2-256,rsa-sha2-512,ecdsa-sha2-nistp256,ssh-ed25519" >> ~/.ssh/config
  - chmod 600 ~/.ssh/config

Test SSH:
  script:
  - ssh root@(IP address here)

备选方案:修改VPS的sshd配置(可选)

如果希望从服务器端解决,可修改VPS的/etc/ssh/sshd_config文件,确保启用了常见的主机密钥类型:

# 确保以下行存在(若注释则取消注释)
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_ed25519_key

修改后重启sshd服务:

systemctl restart sshd

内容的提问来源于stack exchange,提问作者C.A. Vuyk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 20:05:32