首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >运行ssh-add in gitlab-ci.yml

运行ssh-add in gitlab-ci.yml
EN

Stack Overflow用户
提问于 2021-06-24 13:19:42
回答 1查看 434关注 0票数 2

我有一个Gitlab管道,在这个管道中,我想用ssh创建到服务器的连接:

代码语言:javascript
复制
stages:
  - connect

connect-ssh:
  stage: connect
  script:
    - mkdir ~/.ssh
    - echo -e "$PROD_SSH_KEY" > file_rsa        # SSH PRIVATE KEY
    - echo -e "$PROD_SSH_PASSPHRASE" > passfile # PASSPHRASE
    - chmod 600 file_rsa
    - cat passfile | ssh-add file_rsa           # DOESN'T WORK
    - ssh -i $PROD_USER@$PROD_HOST
    - pwd

$ cat passfile \ ssh-add group-5_rsa 无法打开到身份验证代理的连接。

我没有看到多少答案,但他们不适合在gitlab的工作。对于这种情况,我有什么解决办法?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-25 07:25:07

另一种方法在gitlab-org/gitlab-runner第2418期中得到了说明

  • 将命令放入脚本中,包括eval $(ssh-agent -s)
  • 外包said脚本

像你一样调用一个脚本,打开一个子shell。因此,外部shell中无法使用ssh代理环境。 但是,获取脚本在当前的shell中执行它。这也意味着您应该小心在脚本中所做的事情。您可以覆盖环境变量,退出主shell,等等。

在您的示例中,仅仅添加eval $(ssh-agent -s)就足够了,因为脚本的来源与在.gitlab-ci.yml本身逐行运行这些命令是一样的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68116583

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档