ado*_*srs 35 git ssh github jenkins
我正在尝试在github repo上连接jenkins.
当我指定Repo URL时jenkins返回以下错误消息:
无法连接到存储库:命令"git ls-remote -h git@github.com:adolfosrs/jenkins-test.git HEAD"返回状态码128:stdout:stderr:主机密钥验证失败.致命:无法从远程存储库读取.请确保您具有正确的访问权限并且存储库存在.
使用HTTPS时:// Url jenkins返回:
无法连接到存储库:无法连接到 https://github.com/adolfosrs/jenkins-test.git(status = 407)
我可以在jenkins运行的同一台机器上成功克隆repo,我也运行git ls-remote -h git@github.com:adolfosrs/jenkins-test.git HEAD命令.所以我在github上有正确的SSH.
ado*_*srs 17
问题是我以某种方式用root用户创建了ssh文件.所以文件所有者是root.
解决方案只是将所有权更改为jenkins用户.
chown jenkins id_rsa.pub
chown jenkins id_rsa
Run Code Online (Sandbox Code Playgroud)
这是一个非常棘手的问题 - 即使你已经熟悉https中带有证书的工作方式(OTOH,如果你看到我的解决方法,它似乎很合乎逻辑:)
如果要通过shell中的http连接到GIT存储库,则必须确保将公共证书存储(作为文件)在您的计算机上.然后,您将该证书添加到您的GIT配置
git config [--global] http.sslCAInfo"certificate"
(将"certificate"替换为PEM文件的完整路径/名称:)
对于shell的使用,您也可以提供一个'.netrc'来证明您的http-server登录凭据.完成后,您将能够执行"git clone https:// ..."而无需任何交互式配置凭据.
但是,对于Jenkins服务,它有点不同......在这里,jenkins进程需要知道服务器证书 - 并且它不使用shell设置(在全局git配置文件的意义上'.gitconfig '):P
我需要做的是在Jenkins的启动选项中添加另一个参数.
... -Djavax.net.ssl.trustStore ="keystore"...
(将"keystore"替换为完整的路径/名称,如下所述:)
现在将持有证书的Web服务器的密钥库文件复制到某个路径(我知道这是一个脏的黑客并且不完全安全:)并使用'-Djavax.net.ssl.trustStore ='参数引用它.
现在,Jenkins服务将接受来自Web服务器的证书,该证书通过https提供存储库.配置GIT存储库URL,如
请注意,您仍然需要jenkins-user主文件夹下的".netrc"进行登录! 因此,我所描述的将被视为一种解决方法......直到提供正常工作的凭证帮助程序插件.恕我直言这个插件(在其当前版本1.9.4)是错误的.
无论我怎样尝试,我都无法从Jenkins那里获得凭证帮助:(最好我看到一些关于无法访问的临时凭证助手文件的错误等等.你可以在Jenkins中看到很多关于它的bug报告JIRA,但没有修复.
所以,如果有人让它工作正常,请分享知识......
PS:使用以下版本中的Jenkins插件:
Credentials插件1.9.4,GIT客户端插件1.6.1,Jenkins GIT插件2.0.1
当我尝试将 Windows 服务器中的 jenkins 与我的私人 GIT 存储库连接时,我遇到了类似的问题。以下是Jenkins作业源码管理部分返回的错误
无法连接到存储库:命令“git.exe ls-remote -h ssh://git@my_server/repo.git HEAD”返回状态代码 128: stdout: stderr: Load key "C:\Windows\TEMP\ssh4813927591749610777. key": 无效格式 git@my_server: 权限被拒绝 (publickey)。致命:无法从远程存储库读取。
请确保您拥有正确的访问权限并且存储库存在。
抛出此错误是因为 jenkins 无法从其用户目录中选择私有 ssh 密钥。我通过以下方式解决了这个问题
在詹金斯工作中,填写以下信息 Source Code Management
存储库
存储库 URL:ssh://git@my_server/repo.git
凭据:-none-
在我的设置中 jenkins 在本地系统帐户下运行,所以用户目录是C:\Windows\System32\config\systemprofile(这是这个设置中不是很明显的重要事情)。
现在使用ssh-keygen -t rsa -C "key label"通过git bashshell创建 ssh 私钥和公钥。ssh 私钥和公钥位于您登录用户目录的 .ssh 目录下。只需复制 .ssh 文件夹并将其粘贴到C:\Windows\System32\config\systemprofile
将您的公钥添加到您的 GIT 服务器帐户。运行 jenkins 作业,现在您应该能够通过 jenkins 的 ssh 连接到 GIT 帐户。
小智 6
我有同样的问题。我在Mac上解决此问题的方法是:
在我们的例子git中,必须安装在 Jenkins 服务器上。
| 归档时间: |
|
| 查看次数: |
135565 次 |
| 最近记录: |