我目前正在尝试从 Gitlab CI/CD Docker 容器触发远程机器上的脚本。作业配置如下:

stages: 
  - deploy 
 
image: maven:3.3.9 
 
server-deploy: 
  stage: deploy 
  allow_failure: false 
  script: 
    ## Install ssh agent 
    - apt update && apt install openssh-client -y 
    - eval $(ssh-agent -s) 
    ## Create SSH key file 
    - "echo \"-----BEGIN OPENSSH PRIVATE KEY----- 
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW 
QyNTUxOQAAACByjJBGT21Arna/pirWVXQqGAr/aszqQ5HzvrA2MzVDZAAAAJiGKEEKhihB 
CgAAAAtzc2gtZWQyNTUxOQAAACByjJBGT21Arna/pirWVXQqGAr/aszqQ5HzvrA2MzVDZA 
AAAEAKbObQgJGXbrKQt4wdCy3YQfpVBqkT5RNEt2IYU5pv3HKMkEZPbUCudr+mKtZVdCoY 
Cv9qzOpDkfO+sDYzNUNkAAAAFHN2ZW5AREVTS1RPUC0xTjVKUjRSAQ== 
-----END OPENSSH PRIVATE KEY-----\" > deploy-key" 
    ## Fix permissions on key file and .ssh folder 
    - chmod 700 deploy-key; mkdir -p ~/.ssh; chmod 700 ~/.ssh 
    ## Import SSH key 
    - ssh-add -k deploy-key 
    ## Make sure that ssh will trust the new host, instead of asking 
    - echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config 
    ## Run script on the remote server 
    - ssh -t user@255.255.255.255 "./deploy-master" 

(SSH key 只是一个临时 key ,专门为 SO 问题生成)
现在,当作业到达“ssh-add -k deploy-key”命令时失败,要求输入密码,如下所示:
$ ssh-add -k deploy-key 
Enter passphrase for deploy-key: ERROR: Job failed: exit code 1 

SSH key 显然没有附加密码,我可以通过在我自己的 Linux 机器上运行完全相同的命令来验证这一点,在那里它们可以正常工作。

所以我的问题是:如何防止 ssh-add 要求输入密码?我也很好奇为什么这只发生在 Gitlab CI Docker 容器上,而不是我自己的 PC 上。

提前致谢!

请您参考如下方法:

好的,我让它工作了。事实证明 ssh-add 对文件格式非常挑剔,尤其是换行符。 .gitlab-ci.yml 中的换行符不会直接传输到命令中,因此 key 最终变成了一大行。

这是我解决它的方法:

- echo -----BEGIN OPENSSH PRIVATE KEY----- >> deploy-key 
- echo b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW >> deploy-key 
- echo QyNTUxOQAAACByjJBGT21Arna/pirWVXQqGAr/aszqQ5HzvrA2MzVDZAAAAJiGKEEKhihB >> deploy-key 
- echo CgAAAAtzc2gtZWQyNTUxOQAAACByjJBGT21Arna/pirWVXQqGAr/aszqQ5HzvrA2MzVDZA >> deploy-key 
- echo AAAEAKbObQgJGXbrKQt4wdCy3YQfpVBqkT5RNEt2IYU5pv3HKMkEZPbUCudr+mKtZVdCoY >> deploy-key 
- echo Cv9qzOpDkfO+sDYzNUNkAAAAFHN2ZW5AREVTS1RPUC0xTjVKUjRSAQ== >> deploy-key 
- echo -----END OPENSSH PRIVATE KEY----- >> deploy-key 

这样文件中的换行符会自动创建,现在 ssh-add 选择格式。


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!