GCP 计算实例上的部署失败,为啥从 Gitlab 推送更改

Posted

技术标签:

【中文标题】GCP 计算实例上的部署失败,为啥从 Gitlab 推送更改【英文标题】:Deployment on GCP compute instance failed why pushing changes from GitlabGCP 计算实例上的部署失败,为什么从 Gitlab 推送更改 【发布时间】:2018-11-03 03:27:02 【问题描述】:

我是Gitlab的新手,希望能在这里得到帮助。

我在 GCP 中有一个运行 debian linux 的虚拟机。 我正在使用 Gitlab 将更改推送到该 VM。 对于先决条件,我生成了 SSH 密钥并将其添加到 Gitlab。

这就是我的 gitlab-ci.yml 的样子

before_script:
 - apt-get update -qq && apt-get install -y -qq sshpass

deploy_stage:
  stage: deploy
  environment: Staging
  only:
    - stage
  script:
    - ls
    - sshpass -V
    - export SSHPASS=$USER_PASS 
    - sshpass -e scp -o stricthostkeychecking=no -r . xxxxxx@xx.xxx.xx.xx:/datastore/test

但是当我合并更改时,我收到以下错误

管道作业的输出

$ ls
test
test2
test2-merge
$ sshpass -V
sshpass 1.06
(C) 2006-2011 Lingnu Open Source Consulting Ltd.
(C) 2015-2016 Shachar Shemesh
This program is free software, and can be distributed under the terms of the GPL
See the COPYING file for more information.

Using "assword" as the default password prompt indicator.
$ export SSHPASS=$USER_PASS
$ sshpass -e scp -o stricthostkeychecking=no -r . xxxxxx@xx.xxx.xx.xx:/datastore/test
***Warning: Permanently added 'xx.xxx.xx.xx' (ECDSA) to the list of known hosts.
Permission denied (publickey).***
lost connection
ERROR: Job failed: exit code 1

我错过了什么?

【问题讨论】:

使用“assword”?这是预期的吗? 是的,这就是 sshpass 显示的内容。我也有同样的问题。 【参考方案1】:

仔细检查您是否拥有正确的 ssh 密钥,并在不删除任何字符的情况下复制它们。您可以使用这些键手动连接吗?例如,将它们添加到本地 .ssh/config 并尝试 ssh 进入 VM。

【讨论】:

这是个好建议。我试过了,我得到了完全相同的错误。我使用了一种非常标准的 ssh 密钥生成方法。 ssh-keygen -t rsa -C "your.email@example.com" -b 4096 cat ~/.ssh/id_rsa.pub 我还检查了权限 - 我也没有看到任何问题 drwx------ .ssh -rw-r--r-- id_rsa.pub -rw------ - id_rsa 啊,好吧,那可能是防火墙问题。您的 VM 上是否允许 ssh 连接?首先要尝试的另一件事是:通过 Cloud Console 的 SSH 按钮进行连接。 console.cloud.google.com/compute/instances

以上是关于GCP 计算实例上的部署失败,为啥从 Gitlab 推送更改的主要内容,如果未能解决你的问题,请参考以下文章

如何直接从 nvidia 网站下载 cuDNN 到我在 GCP 上的 linux 实例

从 GCP 计算实例复制到存储桶时出现 AccessDeniendException

如何将 SSO 集成添加到我的自我管理的 gitlab 实例中?

从存储桶复制 GCP 文件失败,无法访问元数据服务

[创建数据库用户时,GCP部署管理器“ ResourceErrorCode”:“ 400”

为啥 GCP 存储桶上的新文件不发送 pubsub 消息?