首页 > 解决方案 > 无法通过 jenkins 中的 ssh 连接到 bitbucket

问题描述

我正在尝试通过 Jenkinsfile 创建一个标签,然后将其推送到通过 ssh 连接的远程存储库。

以供参考:

在 Jenkins 中使用单一管道。

我在 bitbucket 中设置了 webhook,每当我推送代码时都会触发 Jenkins 中的构建。如果我通过 https 连接,则可以使用。

我已经生成了存储在本地的 ssh 密钥。当我通过我的 ide 处理代码(拉/推)时,这些键有效。

使用相同的 ssh 密钥(因此 bitbucket 中的公钥没有变化),通过 Credentials 在 Jenkins 中添加了私钥。商店叫 Jenkins,Domain 是 Global。请参阅有关如何设置我的凭据的屏幕截图。

在此处输入图像描述

但是当我尝试通过 ssh 设置存储库时,出现以下错误:

无法连接到存储库:命令“git.exe ls-remote -h -- git@bitbucket.org:myname/jenproject.git HEAD”返回状态码 128:stdout:stderr:加载键“C:\Windows\TEMP\ jenkins-gitclient-ssh145544752032398406.key”:无效格式 git@bitbucket.org:权限被拒绝(公钥)。致命:无法从远程存储库中读取。

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

在此处输入图像描述

看起来它没有从正确的位置读取。我能得到一些帮助吗?我需要进一步设置吗?一直在关注教程和视频指南,建议设置我拥有的 ssh 密钥。请指教。谢谢。

标签: gitjenkinssshbitbucket

解决方案


invalid format如果您在 Jenkins 的凭据部分错误地粘贴了您的私钥,可能会出现 Jenkins 错误。确保您粘贴了私钥文件的完整内容,如下所示:

-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABFQAAAAdz
nYr+I/KWGeCBrl+y5kGNkOy68aUC1BMRGecfQ773DQxLVrdvDTrVD3K3fDMKvD3a
70e67IyiWZP7Ti83NvsZNxZ2KmBMc/qh0YsQeyvWvOxOM9IRqWAF63ZNF/ShJv9G
...
...
...
m/VXqS6KmjemlbYbcrGaEkH5eXhT+gW7eQr7oEouHwAAAIEArUSTb8Z6+D3DbMFF
mf9YRulDVHwU5aCFQMCGkI1Kx7h2FQcOgqhmJAlthMOdzlP5wVC6pbBug6sT9f6H
xO8RbjNHwXMDl3QKsHCNcIy0Uj0AAAAHc2FwaWVudAECAwQF
-----END OPENSSH PRIVATE KEY-----

正如您从上面的示例中看到的那样,它也应该包括两者-----BEGIN OPENSSH PRIVATE KEY----------END OPENSSH PRIVATE KEY-----部分。不要修剪任何东西,包括破折号 ( -)

进行上述更改后,如果您遇到错误git@bitbucket.org: Permission denied (publickey),请确保您使用能够从命令行成功运行命令 ( ssh -vT git@bitbucket.org) 的同一用户运行 Jenkins(Git Bash在您的情况下)。为此,请按照此处说明的说明进行操作

在这里也总结一下:

1. Run > 'services.msc' (Enter)
2. Select Jenkins service. Right-click and select Properties
3. Click on 'Log On' tab
4. Select user 'X' and provide credentials
5. Restart Jenkins

推荐阅读