我有一个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 passfile \ ssh-add group-5_rsa 无法打开到身份验证代理的连接。
我没有看到多少答案,但他们不适合在gitlab的工作。对于这种情况,我有什么解决办法?
发布于 2021-06-25 07:25:07
另一种方法在gitlab-org/gitlab-runner第2418期中得到了说明
eval $(ssh-agent -s)像你一样调用一个脚本,打开一个子shell。因此,外部shell中无法使用ssh代理环境。 但是,获取脚本在当前的shell中执行它。这也意味着您应该小心在脚本中所做的事情。您可以覆盖环境变量,退出主shell,等等。
在您的示例中,仅仅添加eval $(ssh-agent -s)就足够了,因为脚本的来源与在.gitlab-ci.yml本身逐行运行这些命令是一样的。
https://stackoverflow.com/questions/68116583
复制相似问题