尝试使用 Gitlab CI 创建 SSH 连接,错误:SSH Permission denied (publickey,password)

Posted

技术标签:

【中文标题】尝试使用 Gitlab CI 创建 SSH 连接,错误:SSH Permission denied (publickey,password)【英文标题】:Trying to create SSH connection using Gitlab CI, Error : SSH Permission denied (publickey,password) 【发布时间】:2021-10-30 14:28:06 【问题描述】:

我在 GitLab 上有一个存储库和一个私有 VPS。我想要做的是当我推送到存储库时,我需要 GitLab/ci 脚本来连接 VPS 服务器。 我试过的是

    使用ssh-keygen登录VPS并生成SSH密钥 将私钥复制到 Gitlab > 设置 > CI/CD > 变量 > SSH_PRIVATE_KEY 将公钥复制到 Gitlab > 用户首选项 > SSH 密钥 并在 gitlab.ci 中使用以下脚本推送提交
    - 'which ssh-agent || ( apk add openssh-client )'
    # Run ssh-agent (inside the build environment)
    - eval $(ssh-agent -s)
    # add ssh key stored in SSH_PRIVATE_KEY variable to the agent store
    - echo "$SSH_PRIVATE_KEY"
    - echo "$SSH_PRIVATE_KEY" > key
    - chmod 600 key
    - ssh-add key
    # make dirs
    - mkdir -p ~/.ssh
    - chmod 700 ~/.ssh
    - ssh-keyscan -t rsa 1.2.3.4.5 > ~/.ssh/known_hosts
    - chmod 644 ~/.ssh/known_hosts
    # Remove
    - rm key
  script:
    - ssh user@1.2.3.4.5

=> PS:1.2.3.4.5不是真实的IP地址我只是换了个例子。

    我得到的是user@1.2.3.4.5 : Permission denied (publickey,password).

=> PS:我的分支或标签未受保护或私有

【问题讨论】:

您已将新生成的密钥添加到authorized_keys 【参考方案1】:

在脚本测试中,使用:

ssh -Tv user@1.2.3.4.5

这样,您将看到名为“key”的文件是否被使用。

如果它实际上被命名为“key”(例如,而不是默认的 id_rsa),则需要一个 ~/.ssh/config 文件来引用它:

Host destination
  Hosname 1.2.3.4.5
  User user
  IdentityFile ~/.ssh/key

但在这种情况下,URL 调用将是:

ssh -Tv destination

【讨论】:

以上是关于尝试使用 Gitlab CI 创建 SSH 连接,错误:SSH Permission denied (publickey,password)的主要内容,如果未能解决你的问题,请参考以下文章

如何在 gitlab-ci.yml 文件中通过 ssh 设置变量值

如何在 gitlab CI 构建中仅安装 ssh?

在 Gitlab CI 构建中,我无法通过私钥 ssh 进入 AWS EC2

Gitlab CI/Docker:ssh-add 不断要求输入密码

Docker-ssh非root路径/ getsockopt:连接被拒绝

Gitlab - 无法对 CI 和 CD 构建的远程服务器进行身份验证