Jenkins在Windows上使用Git时出现问题 [权限被拒绝(publickey).]

4

我知道有成千上万的话题与我的问题相关,但我已经花费了数天的时间来解决这个问题,几乎没有任何进展 ;(。

我在Windows机器上安装了Jenkins。
然后获取了Git插件和Git本身。
所有内容都是我编写当天的最新版本。
我很高兴开始尝试使用Jenkins,但我在配置Bitbucket存储库以供作业使用时失败了。

我设置了git.exe的确切路径(因为它似乎是最初出现问题的原因)[C:\Program Files\Git\cmd\git.exe]。

然后我尝试使用帐户凭据通过HTTPS访问存储库,这里发生了许多奇怪的错误,所以我想让我们尝试使用SSH。

我生成了RSA密钥,在Bitbucket存储库中设置了公钥。然后我在Jenkins中创建了凭据配置,用于SSH身份验证,并设置了密码。
我在这里遇到了很多问题,所以为了临时解决,我明确设置了私钥的值。
最终,我到达了现在的位置:

+refs/heads/*:refs/remotes/origin/*" 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.

当我试图手动复制存储库时,它会礼貌地询问我密钥口令并完成复制。但是当 Jenkins 作业尝试复制时,会出现上述情况。使用 Job 脚本中的 %USERNAME% 和 %USERDOMAIN%,我得到了与手动操作相同的值。
经过数小时的尝试后,我必须说我无法在 Jenkins 中使用 Git;(
更新:
我不相信解决方法会如此简单。正如 mainframer 所提到的,我将 SSH 认证的密钥口令留空后,它真的起作用了(即使 Jenkins 在作业配置页面中仍显示相同的错误)。我只是想知道这种设置是否会产生任何后果,但现在对我来说,能够工作就足够了。

3
我认为你应该使用SSH身份验证,不要设置密码,因为Jenkins以非交互模式与Git通信。 - mainframer
@mainframer 你的意思是在生成密钥时留空口令,然后在Jenkins SSH凭据中也没有口令配置吗? - Dawid Komorowski
1个回答

2

您的意思是在生成密钥时留空密码,然后在Jenkins SSH凭据中也没有密码配置?

是的,因为Jenkins无法将口令提供给SSH会话。

但请确保Jenkins从属服务使用您的帐户运行(而不是系统帐户)。它需要您的帐户来查找%USERPROFILE%\.ssh\id_rsa(.pub)中的SSH密钥。


实际上 Jenkins 看起来使用了正确的帐户,但我仍然被迫在 Jenkins 配置中输入密钥,或者至少是准确的路径。也许作业返回的用户并不是 Jenkins 使用的实际用户? - Dawid Komorowski
@DawidKomorowski 你输入的是私钥路径(id_rsa)还是公钥路径?应该引用私钥。 - VonC
@DawidKomorowski 关于工作,看看你的Jenkins从属服务(或者,如果主节点和从节点是同一个),看看Jenkins本身是如何启动的。 - VonC
是的,我定位到了私钥,但我需要明确指定它。它在 %USERPROFILE%.ssh\ 中没有找到,但实际上是存在的。就配置而言,我只有一个节点,即主节点,因此我认为从节点和主节点是相同的。或者我应该以不同的方式检查它? - Dawid Komorowski
@DawidKomorowski 不需要,只要使用您的帐户启动 java -war jenkins.war 即可。 - VonC

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接