尝试使用 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 进入 AWS EC2
Gitlab CI/Docker:ssh-add 不断要求输入密码