使用作为模块源的bitbucket存储库处理ssh / https auth

时间:2018-09-16 01:03:08

标签: git ssh bitbucket terraform bitbucket-pipelines

我正在尝试使用BitBucket专用私有模块存储库中提供的Terraform模块。我在BitBucket中有一个应用程序存储库,其中有Terraform模板,该模板使用了模块存储库中的模块。当我检查对应用程序存储库的更改时,它将触发BitBucket管道。

当BitBucket Pipelines在我的应用程序存储库上运行时,其中的Terraform模板将我的模块存储库作为模板使用的模块的源。管道运行terraform init失败,因为管道需要输入模块源存储库的密码。我已经看到人们使用git credential helper来存储凭据,但这似乎是缓存先前输入的凭据的解决方案。在此解决方案中情况并非如此,因为这是一个Docker映像,以前没有在其上缓存我的git凭据。

我也花了很多时间来尝试使用ssh。我已经在我的应用程序存储库中生成了公共/私有ssh密钥,将公共密钥提供给了我的模块存储库,然后将模块源设置为我的ssh git路径。 Terraform仍然无法找出存储库路径,告诉我它不是有效的存储库。

  

错误下载模块:错误加载模块:错误下载'ssh://git@bitbucket.org:foo / bar.git':C:\ Program Files \ Git \ cmd \ git.exe退出并显示128:克隆到'.terraform \ modules \ f169a1ea8d4eb404'...   ssh:无法解析主机名bitbucket.org:foo:名称或服务未知   致命的:无法从远程存储库读取。

     

请确保您具有正确的访问权限   并且存储库存在。

使用ssh时,我尝试将源设置为git::ssh://git@bitbucket.org:foo/bar.gitgit::git@bitbucket.org:foo/bar.git。每次我被告知这不是有效的存储库时,主机名都是未知的,并且无法对其进行授权。我还在Windows的bitbucket.org路径下的known_hosts文件中添加了$HOME/.ssh。我不确定SSH密钥是否被正确使用,或者Terraform无法确定BitBucket存储库路径。

我更愿意通过HTTPS /缓存的凭据进行SSH路由,但是即使我在Windows计算机上本地运行“ terraform init”,也无法使其正常工作。因此,我想从这里开始,要在Windows上使用Terraform以SSH作为Modules源来使用BitBucket存储库,我该怎么办?

1 个答案:

答案 0 :(得分:0)

  

我不确定SSH密钥是否被正确使用,或者Terraform无法确定BitBucket存储库路径

在将环境变量GIT_SSH_COMMAND设置为ssh -v之后,尝试重新启动所有进程,这将向您显示ssh会话使用的密钥。
注意:ssh://git@bitbucket.org:foo/bar.git是错误的:应该为ssh://git@bitbucket.org/foo/bar.git