1

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

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

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

无法连接到存储库:命令“git.exe -c core.askpass=true ls-remote -h ssh://[REMOVED]@git-codecommit.us-east-1.amazonaws.com/v1/repos/[ REMOVED]/ HEAD" 返回状态码 128:stdout:stderr:Permission denied (publickey)。致命:无法从远程存储库中读取。

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

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

您已成功通过 SSH 进行身份验证。您可以使用 Git 与 AWS CodeCommit 进行交互。远程主机关闭与 git-codecommit.us-east-1.amazonaws.com 的连接。致命:无法从远程存储库中读取。

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

所以看来 SSH 连接正在工作。当我运行时:

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

我得到以下输出:

您已成功通过 SSH 进行身份验证。您可以使用 Git 与 AWS CodeCommit 进行交互。不支持交互式 shell。debug1:通道 0:免费:客户端会话,nchannels 1 与远程主机关闭的 git-codecommit.us-east-1.amazonaws.com 的连接。已传输:发送 4160,接收 2368 字节,在 0.2 秒内每秒字节数:发送 24893.3,接收 14170.0 debug1:退出状态 -1

所以看来我真的可以访问代码提交了。

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

有谁知道我怎样才能让詹金斯连接而不显示错误?

4

1 回答 1

1

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

于 2016-05-13T22:30:45.593 回答