我有一个 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 工作。 对于这种情况,我有什么解决方案?
答案 0 :(得分:1)
另一种方法在 gitlab-org/gitlab-runner issue 2418
中有说明eval $(ssh-agent -s)
像您一样调用脚本会打开一个子 shell。因此,ssh 代理环境在外壳中不可用。
但是,采购脚本会在当前 shell 中执行它。这也意味着您应该小心在该脚本中执行的操作。可以覆盖环境变量,退出主shell等
在您的情况下,只需添加 eval $(ssh-agent -s)
可能就足够了,因为获取脚本与在 .gitlab-ci.yml
本身中逐行运行这些命令相同。