我必须在 VM-s 上克隆几个存储库,然后在它们上构建软件。我有相当不错的构建脚本,但有一个问题。在构建之前,应该克隆几个存储库,并且在进行一些安全更新后,我不允许将我的公钥添加到 git 服务器,而且唯一支持的协议是 ssh。
克隆命令如下:
git clone ssh://[email protected]:YYYY/repoB
但是它们太多了,每次都要输入密码真的很烦人,也很耗时。
我想要做的是自动将密码传递给 clone 命令。我尝试添加 userA:passwordA@git-ger.... 但它只适用于 HTTPS,不适用于 ssh。我知道我必须切换到一些自动化工具(如 ansible)才能进行自动部署,但我花了很多时间重写整个构建过程。
我的问题是如何自动将密码传递给 clone repo,而无需更改服务器上的任何内容。理想情况下,应该从 bash 级别执行此操作。我尝试在输入 git clone 后读取行,但对我来说也不起作用。任何帮助都将不胜感激
答案1
我认为最好的解决方案是使用自定义GIT_ASKPASS
助手并将密码作为另一个环境变量提供。例如,创建一个文件git-askpass-helper.sh
如下:
#!/bin/sh
exec echo "$GIT_PASSWORD"
然后git clone https://username@hostname/repo
使用环境变量GIT_ASKPASS=/path/to/git-askpass-helper.sh
和运行GIT_PASSWORD=nuclearlaunchcodes
。