将 Jenkins 连接到 AWS CodeCommit 存储库

Connecting Jenkins to AWS CodeCommit Repo

我已经部署了本地 Jenkins 服务器(Windows 主机)并正在尝试连接到 Amazon 的 AWS CodeCommit 服务中的存储库。 我已经使用我的 AWS 访问密钥和秘密密钥在 Jenkins 中配置了 AWS CodeDeploy 凭证(通过 AWS CodeDeploy 插件)。

我创建了一个新的自由式项目,并在源代码管理下选择了 Git 并进行了配置: 存储库 URL - 从 AWS Code Commit 控制台复制了 SSH url 凭据 - 我创建了一个全局凭据并将其指向我的私钥,然后输入了密码。

配置 Repo URL 时显示以下错误:

Failed to connect to repository : Command "git.exe -c core.askpass=true ls-remote -h ssh://[REMOVED]@git-codecommit.us-east-1.amazonaws.com/v1/repos/[REMOVED]/ HEAD" returned status code 128: stdout: stderr: Permission denied (publickey). fatal: Could not read from remote repository.

Please make sure you have the correct access rights and the repository exists.

似乎是一个简单的访问错误,但我终究无法弄清楚。如果我打开 git bash 并粘贴上面的命令,我会看到:

You have successfully authenticated over SSH. You can use Git to interact with AWS CodeCommit. Connection to git-codecommit.us-east-1.amazonaws.com closed by remote host. fatal: Could not read from remote repository.

Please make sure you have the correct access rights and the repository exists.

看来 SSH 连接正常。 当我 运行:

ssh -vT [REMOVED]@git-codecommit.us-east-1.amazonaws.com

我得到以下输出:

You have successfully authenticated over SSH. You can use Git to interact with AWS CodeCommit. Interactive shells are not supported.debug1: channel 0: free: client-session, nchannels 1 Connection to git-codecommit.us-east-1.amazonaws.com closed by remote host. Transferred: sent 4160, received 2368 bytes, in 0.2 seconds Bytes per second: sent 24893.3, received 14170.0 debug1: Exit status -1

看来我真的可以访问Code Commit了。

我还验证了我的 IAM 用户能够通过附加 CodeCommitFullAccess 策略连接到 CodeCommit。我还在 Windows 主机 运行ning Jenkins 上使用 git bash 克隆了 repo。

有谁知道如何让 Jenkins 连接而不显示错误?

您在问题中提到您正在为 SSH 密钥使用密码。看起来这是 Jenkins 的一个已知问题,目前尚未解决:JENKINS-20879。我看到了一些适用于 Unix 平台的解决方法,但不适用于 Windows。您可以考虑为 Jenkins 创建一个没有密码的 SSH 密钥来解决这个问题。