Git克隆。 key_load_public:格式无效Permission denied(publickey)

时间:2017-01-10 08:06:48

标签: git ssh

我在Windows 10上使用了puttygen.exe来生成私钥和公钥。我将这些密钥保存在C:\ Users \ Alexander \ .ssh \

公钥被添加到远程仓库(不是我。我没有访问权限。)

然后我在Git Bash中使用了命令:

git clone git@ipaddress:project_name.git

我收到了一个错误:

key_load_public: invalid format
Permission denied (publickey).
fatal: Could not read from remote repository.

示例键(仅为例如生成)

id_rsa.ppk

PuTTY-User-Key-File-2: ssh-rsa
Encryption: none
Comment: rsa-key-20170110
Public-Lines: 6
AAAAB3NzaC1yc2EAAAABJQAAAQEAx0UhtZcgUT5XpoNlcoVFGHbArEsARQVCv5m0
TRh90Xq15gxOvL+x7I0B29xOuOP054RtQaOzHqnKUzpMdrIoZFkYEYJ11p42kC05
PVR/CwtKBuONJZzoIveJlNG1IhbC3G8DMZD5j68T5OVbCqftHMIBe4CTr7TewJ9T
/lmSZPytWXk/Xtcvn1i1TQZS2ShtSNOwtx77fLzkVmC6F4uM2JgJ9bSM2xQZTX/j
DYZTtoEsmyBadANAEZx4kQAoITwxXVRPBPJnB74EdSMXNhrDBJ+sZSEy7kxmc3a/
UK6CzdN3wiEMd/Bb1nuzR2cpWrWhniG66lnOTJb3sF8iiVtw7Q==
Private-Lines: 14
AAABAEtmRBsyQ5RcxzgWCrW14sr8gEExIrJVBH/ZSyQXGtmkDXmjysP1gZfGpsHk
qCpIaoEdWcXPPNsrfPzloGRDaTq57W5otvdCyImUkjLhs4ejaB5IQz6qEqVya2i+
DS9+O+S0YhLBO9WAhBFrijtiIl3oivB11wQ2mXlRCwZLZ9MugQ3rPfS0O/E2asrO
+MyiR2uv84lVb2wUT0Be3eeubnT2Qp8CoX3qV93LwBM053tepmD0jtSBsaXepADw
mdjBfIkUm+z/69PKtsEoYtIRe5DQRGQhUrwZasJnrfwAvdkr56NKM/rEL0ocUPDX
pXQalD88fKHKog5pr25c8aImklUAAACBAPmqhoRBWy+VJxgZ2BeMYv2PbmQCrQyp
ZVqua9byU59cANjarPcEb1zSUVEJyO8KlTW1eiTeMrya3cdrqbk3Rhp8XgolRsrv
ZK2rMQxP5nIoHyndtG1CCVqrWnwjIsb4r4cq2aBaUWjQJ+ofpiUHVkHev+h58zEA
zpDZs0Jrv5n7AAAAgQDMU04pqQ1hnv050gs8C2Gy+DjbW8b/NbQl64x0HFik/lWB
CRLrCd341ZQWY0PcU5ZjwNa8GwwJZPJI2bX84/a7dq2ENnT1+uYqpuK8lnPTcBDy
WjlGcf/fWJyJpdLqqXkMZ7or4k9ReVIXz9A8xRkhGEH2xM8Vk2fyoLY88RFUNwAA
AIA+zxdPdF8dPr8HwTJ5Pb0NQjl2likOxR24QmqxlCu/bD1p8R1tZzX5Jh2HP2on
RO+KVLYHzNKqtKRZW/MHftYcm6AvYLhP7hxG/tFoNM9lEmsqdJenxaWP745LP9Pc
k3qh7kC4KfTXyfgsd+C6dXzqhAokz81zL41QtyJxlQzR2w==
Private-MAC: ce79771084cbabf61fc2bf3b1403e42a9957e2af

id_rsa.pub

---- BEGIN SSH2 PUBLIC KEY ----
Comment: "rsa-key-20170110"
AAAAB3NzaC1yc2EAAAABJQAAAQEAx0UhtZcgUT5XpoNlcoVFGHbArEsARQVCv5m0
TRh90Xq15gxOvL+x7I0B29xOuOP054RtQaOzHqnKUzpMdrIoZFkYEYJ11p42kC05
PVR/CwtKBuONJZzoIveJlNG1IhbC3G8DMZD5j68T5OVbCqftHMIBe4CTr7TewJ9T
/lmSZPytWXk/Xtcvn1i1TQZS2ShtSNOwtx77fLzkVmC6F4uM2JgJ9bSM2xQZTX/j
DYZTtoEsmyBadANAEZx4kQAoITwxXVRPBPJnB74EdSMXNhrDBJ+sZSEy7kxmc3a/
UK6CzdN3wiEMd/Bb1nuzR2cpWrWhniG66lnOTJb3sF8iiVtw7Q==
---- END SSH2 PUBLIC KEY ----

这里可能有什么问题?

3 个答案:

答案 0 :(得分:30)

Git正在使用OpenSSH,它不支持PuTTY密钥格式。您需要将其转换为OpenSSH格式。这在SO文档中有所描述,现在是Not able to add SSH key in Jenkins configuration的答案:

  • 打开PuttyGen
  • 点击加载
  • 加载您的私钥
  • 转到转化 - > 导出OpenSSH 并导出您的私钥
  • 将您的私钥复制到~/.ssh/id_rsa

答案 1 :(得分:0)

验证接下来的事情:

  1. 检查~/.ssh目录中是否有空的~/.ssh/authorized_keys文件。 那里可能有多个.pub文件(取决于您已经创建的文件)。如果找到空白的.pub文件,请转到{{1}}文件(在服务器上)中应将其保存在远程服务器中的位置。复制它的值并粘贴到本地公共密钥文件中。保存。

  2. 如果您的本地公共密钥中的所有内容都正确,请检查是否没有将私有密钥粘贴到服务器或其他东西上。

答案 2 :(得分:0)

很抱歉回答一个老问题,但是列出的解决方案没有帮助。这是对我有用的东西:

Git可能没有使用正确的SSH客户端进行传出连接。

我遇到了类似的问题,结果finding an answer使我走上了解决之路。据我了解,Git和My命令行都使用openssh生成密钥对,但是Git试图使用自己的SSH客户端打开它们。

我不确定为什么Git会使用两个不同的ssh客户端,一个用于生成,一个用于连接,但这可以通过打开与GitHub的SSH会话来验证我的密钥而没有连接到存储库来证明。进一步检查似乎可以验证该理论:

C:\where ssh
C:\Windows\System32\OpenSSH\ssh.exe

在git bash中:

$ where ssh
C:\Program Files\Git\usr\bin\ssh.exe

虽然尝试回答答案中列出的命令并不能解决我的问题,但它们使我进行了更为成功的Google搜索,使我to this GitHub comment,包含以下单行命令,可在git bash中运行:

git config --global core.sshCommand "'C:\Windows\System32\OpenSSH\ssh.exe'"

如果此命令有效,它将不会输出任何内容,但它将git设置为使用Windows打包的ssh客户端,而不是git附带的客户端。运行此命令后,Git可以为我完美地工作。

奇怪的是,现在在git bash中运行“ where ssh”会返回两条路径,但似乎并不会引起更多问题:

$ where ssh
C:\Program Files\Git\usr\bin\ssh.exe
C:\Windows\System32\OpenSSH\ssh.exe