【问题标题】:Git clone. key_load_public: invalid format Permission denied (publickey)Git克隆。 key_load_public:格式无效权限被拒绝(公钥)
【发布时间】:2019-11-03 09:52:39
【问题描述】:

我在 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 ----

这里可能有什么问题?

【问题讨论】:

    标签: git ssh


    【解决方案1】:

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

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

    【讨论】:

    • 好吧,您可能不得不将id_rsa.pub 移开,因为客户端无法读取它。
    • 它没有帮助。我认为生成的公钥对 OpenSSH 无效。它应该以ssh-rsa AAAAB3NzaC1yc... 开头。但是我的key以一些cmets开头,没有ssh-rsa的话。
    • 是的。将上面的公钥移开或将其替换为 openssh 格式。
    【解决方案2】:

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

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

    我遇到了类似的问题,最终找到了finding an answer,这让我走上了解决问题的正确道路。据我了解,Git 和我的命令行都使用 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
    

    虽然尝试答案中列出的命令并没有解决我的问题,但他们引导我进行了更成功的谷歌搜索,得到了我 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
    

    【讨论】:

      【解决方案3】:

      验证接下来的事情:

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

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

      【讨论】:

        猜你喜欢
        • 2016-02-20
        • 1970-01-01
        • 2017-10-30
        • 1970-01-01
        • 1970-01-01
        • 2014-03-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多