在 gitlab-ci.yml 中运行 ssh-add

时间:2021-06-24 13:19:42

标签: ssh gitlab gitlab-ci

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

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 密码文件 | ssh-add group-5_rsa
无法打开与您的身份验证代理的连接。

我看到的答案很少,但它们不适合 gitlab 工作。 对于这种情况,我有什么解决方案?

1 个答案:

答案 0 :(得分:1)

另一种方法在 gitlab-org/gitlab-runner issue 2418

中有说明
  • 将命令放入脚本中,包括 eval $(ssh-agent -s)
  • 采购所述脚本
<块引用>

像您一样调用脚本会打开一个子 shell。因此,ssh 代理环境在外壳中不可用。
但是,采购脚本会在当前 shell 中执行它。这也意味着您应该小心在该脚本中执行的操作。可以覆盖环境变量,退出主shell等

在您的情况下,只需添加 eval $(ssh-agent -s) 可能就足够了,因为获取脚本与在 .gitlab-ci.yml 本身中逐行运行这些命令相同。

相关问题