Bar*_*t C 10 git ssh bitbucket jenkins
我正在Windows Server 2016上运行的Jenkins 2.152中创建一个工作,需要从bitbucket.org上托管的git repo中提取.我通过git-bash测试了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.
Run Code Online (Sandbox Code Playgroud)
凭据设置为
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
Run Code Online (Sandbox Code Playgroud)
我注意到在另一台Windows Jenkins服务器上,私钥每行的字符数不同
有谁知道Jenkins凭证中预期的私钥格式是什么?或者也许还有其他我可以检查的东西.
任何帮助是极大的赞赏.
Von*_*onC 10
检查您正在使用的Git for Windows版本:从2.19.2开始,它附带OpenSSH v7.9p1(之前为7.7)
而且...... openssh 7.8只是将默认的ssh-keygen格式从经典的PEM 64-chars改为OPENSSH 70-chars!
只会ssh-keygen -m PEM -t rsa -P "" -f afile
生成旧格式(-m PEM
)
ssh-keygen(1)
:默认情况下编写OpenSSH格式私钥,而不是使用OpenSSL的PEM格式.
自2014年以来在OpenSSH版本中支持并在
PROTOCOL.key
源代码分发中的文件中描述的OpenSSH格式提供了更好的防止脱机密码猜测的保护,并支持私钥中的关键注释.
如有必要,可以-m PEM
在生成或更新密钥时通过向ssh-keygen的参数添加" " 来编写旧的PEM样式密钥.
我也收到了此错误消息,并最终发现Jenkins凭据应该是RSA密钥,而不是公共密钥。以下是我配置Jenkins从bitbucket克隆的步骤:
Run Code Online (Sandbox Code Playgroud)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-----
最后,我找不到将私钥粘贴到 Jenkins 凭据的方法。
虽然这对许多人来说可能是常识,但我还是决定将解决方法放在下面。
这是我从 Bitbucket.org 中提取我的私人存储库的解决方法:
ssh-keygen
接受所有默认值的命令生成 SSH 密钥None
这样 Git 和 SSH 将能够在默认位置找到 SSH 密钥,通常是 c:\Users\username.ssh\
希望这可以帮助某人。
小智 5
因此,只需添加一个答案,将密钥从新的 OPENSSH 格式实际转换为旧的 PEM 格式:
$ ssh-keygen -f blah.key
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in blah.key.
Your public key has been saved in blah.key.pub.
The key fingerprint is:
SHA256:ndMFvZjbD7M3MoqFy8+me74gPhcuoDVLF2/Oh+hXQ8I perbelding@erpelbook4.local
$ head -n 1 blah.key
-----BEGIN OPENSSH PRIVATE KEY-----
$ ssh-keygen -f blah.key -m PEM -p
Key has comment 'redacted'
Enter new passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved with the new passphrase.
$ head -n 1 blah.key
-----BEGIN RSA PRIVATE KEY-----
Run Code Online (Sandbox Code Playgroud)
ssh-keygen -p 更改密码,但它不介意新密码与旧密码相同(甚至没有),并且在此过程中可以转换格式。
归档时间: |
|
查看次数: |
6181 次 |
最近记录: |