当前位置: 首页 > 知识库问答 >
问题:

詹金斯:凭证中私钥的正确格式是什么

微生毅
2023-03-14

我正在Windows Server 2016上运行的Jenkins 2.152中创建一个作业,该作业需要从bitbucket上托管的git repo中提取。组织。我通过GitBash测试了ssh密钥,因此我知道它可以工作,并且没有密码短语。当我尝试使用与Jenkins相同的私钥时,会收到一条错误消息。

Failed to connect to repository : Command "git.exe ls-remote -h 
git@bitbucket.org:mygroup/myrepo HEAD" returned status code 128:
stdout: 
stderr: Load key 
"C:\\Users\\JE~1\\AppData\\Local\\Temp\\ssh2142299850576289882.key": invalid format 
git@bitbucket.org: Permission denied (publickey). 
fatal: Could not read from remote repository.

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

全权证书设置为

 scope: Global
 user: git
 Private Key -> Enter Directly -> copy and past - generated by ssh-keygen -t rsa in gitbash
 Passphrase: empty
 ID: empty
 description: bitbucket.org

我注意到在另一台Windows Jenkins服务器上,私钥每行的字符数不同

有人知道詹金斯证书中私人密钥的预期格式吗?或者也许还有其他我可以检查的东西。

非常感谢您的帮助。

共有3个答案

傅边浩
2023-03-14

最后,我找不到一种方法来将私钥粘贴到Jenkins凭证上。

尽管这对许多人来说可能是常识,但我还是决定将解决方法放在下面。

以下是我从Bitbucket中提取我的私有存储库的变通方法。组织:

  1. 以运行Jenkins服务的用户身份登录到Windows主机。在我的例子中,Jenkins服务作为一个专用用户运行,因为我需要使用仅限于此用户的写入权限访问网络共享
  2. 打开Git bash并使用接受所有默认值的SSH-keygen命令生成SSH密钥
  3. 在Jenkins中,输入git repo URL作为git@bitbucket.org:team_name/repo_name并将凭证保留为None

这样,Git和SSH将能够在默认位置找到SSH键,通常是c:\用户\username.ssh\

希望这对某人有帮助。

罗烨霖
2023-03-14

我还收到了这个错误消息,最终发现Jenkins凭证应该是RSA密钥,而不是公钥。以下是我将Jenkins配置为从bitbucket克隆的步骤:

  1. 在Jenkins凭据中添加凭据
   Kind: SSH username and private key
   Scope: Global
   Username: <my username in bitbucket>
   Private key: <Enter directly>
         -----BEGIN RSA PRIVATE KEY-----
         ......
         -----END RSA PRIVATE KEY-----
麹凯捷
2023-03-14

检查您正在使用的Git for Windows版本:从2.19.2开始,它附带OpenSSH v7.9p1(从之前的7.7开始)

和... openssh 7.8刚刚改变了默认的ssh-keygen格式,从经典的PEM 64字符,到OPENSSH一70字符!

只有ssh-keygen-m PEM-t rsa-P"-f afile将生成旧格式(-m PEM

默认情况下,编写OpenSSH格式的私钥,而不是使用OpenSSL的PEM格式。

OpenSSH格式,自2014年起在OpenSSH版本中受支持,并在协议中描述。源发行版中的key文件提供了更好的保护,以防止脱机密码猜测,并支持私钥中的密钥注释
如有必要,可以通过在生成或更新密钥时向ssh keygen的参数添加“-m PEM”来编写旧PEM样式的密钥。

 类似资料:
  • 问题内容: 在Jenkins,我们将“轮询SCM”计划设置为。但是詹金斯建议 有什么区别和? 问题答案: 当然有区别! -是小时,当分钟== 0时(即1:00、2:00,..) -每分钟 查看指南以获取更多信息。

  • 问题内容: 我正在使用ansible集成开发人员机器。在那台机器上,我正在安装詹金斯。 我用ansible为詹金斯创建了工作: 并通过cli等安装了插件。 但是现在我缺少工作的ssh凭证;我只想要一个带有用户“ jenkins”的ssh凭证,并且使用“来自Jenkins主〜/ .ssh”。 我正在谈论的是这种凭证: 也许是一个普通的脚本,但是我没有找到很多有关它的信息。谢谢您的帮助。 问题答案:

  • 我想在非默认端口上运行Jenkins,所以我修改了Jenkins。如下所示的xml: 它从一开始就可以正常工作http://servername:1010(而不是来自http://servername:8080)但是API(http://servername:1010/api/json?depth=1)仍然报告端口8080上作业的路径。(即“url”:http://servername:8080/

  • 问题内容: 我在詹金斯(Jenkins)有大约10个项目,每个项目针对10个不同的客户。因此,我需要为所有项目创建凭据,以便每个客户端只能访问其项目。 有任何插件可以满足我的要求吗? 请帮忙 !!! 问题答案: 在“全局安全性”下选择“基于项目的矩阵授权策略” 定义普通用户,但不能访问此级别的项目。 然后在每个项目上选择“启用基于项目的安全性”,在这里您可以为单个用户授予其他权限,例如查看和执行作

  • 有没有可能让詹金斯使用真正的浏览器而不是无头浏览器?我正在运行一些用TestNG编写的测试(使用Selenium webdriver)。当我运行testng时。在Eclipse中,浏览器启动并运行测试。但当我使用Jenkins并用maven运行测试时,它不会启动任何浏览器。

  • 问题内容: 我正在尝试使用詹金斯。但是,当我阅读声明性管道语法时,我对“代理”感到困惑(https://jenkins.io/doc/book/pipeline/syntax/#scripted- pipeline )。 代理商代表什么? 这是否意味着我可以设置管道运行时文件夹路径? 如何创建代理? 如何为代理商设置标签? 问题答案: 我能感觉到你:-D。答案如下: 代理程序部分指定整个管道或特定