求问一下 git 提交时报错 invalid format 怎么解 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
LxnChan
V2EX    问与答

求问一下 git 提交时报错 invalid format 怎么解

  •  
  •   LxnChan 2023-07-17 23:54:50 +08:00 1279 次点击
    这是一个创建于 816 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我本地有个 git 仓库,remote 地址是 ssh 形式([email protected]:xxx/xxx.git),采用密钥对的方式登录。

    近两天重做了系统,之前的 Key (C:\Users\Username\.ssh整个文件夹)都被存放在了一个很安全的存储设备里面。重做系统后把之前备份的密钥对还原到了上述路径,之后登录业务主机没有影响。

    但是今天改了点代码,想到好多天没上传了,寻思 Push 一下,结果报错:

    Username@ComputerName MINGW64 /d/projectA (main) $ git push -u origin main Load key "/c/Users/Username/.ssh/id_rsa": invalid format [email protected]: Permission denied (publickey). fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists. 

    还以为是 Key 的问题,但是测试了 Key 是能打印出来的

    Username@ComputerName MINGW64 /d/projectA (main) $ cat /c/Users/Username/.ssh/id_rsa -----BEGIN OPENSSH PRIVATE KEY----- [正确的 Key 内容] -----END OPENSSH PRIVATE KEY----- 

    测试在 git bash 中不通过

    Username@ComputerName MINGW64 /d/projectA (main) $ ssh -T [email protected] Load key "/c/Users/Username/.ssh/id_rsa": invalid format [email protected]: Permission denied (publickey). 

    但在 cmd (非管理员权限)中正常

    Microsoft Windows [版本 10.0.19045.2965] (c) Microsoft Corporation 。保留所有权利。 C:\Users\Username>ssh -T [email protected] Hi Username! You've successfully authenticated, but GitHub does not provide shell access. 

    直接就是一个白丝不得其解,VSCode 里面也没办法正常推送,感觉是权限问题,但是权限上看着又没啥问题,想问问大家有没有什么头绪,先谢过了。

    6 条回复    2023-07-18 10:54:11 +08:00
    ManUnDead
        1
    ManUnDead  
       2023-07-17 23:59:38 +08:00 via Android
    是不是本地.ssh 目录里存放的公钥有问题,我记着之前踩过的一个坑是本地居然会对 pub 公钥和私钥进行校验
    hsfzxjy
        2
    hsfzxjy  
       
    你看这里有没有中的 https://serverfault.com/questions/854208/ssh-suddenly-returning-invalid-format

    另外,“白丝不得其解”
    LxnChan
        3
    LxnChan  
    OP
       2023-07-18 08:58:58 +08:00
    @ManUnDead 密钥对是没问题的,能正常 ssh 登录其他主机
    forcecharlie
        4
    forcecharlie  
       2023-07-18 10:22:23 +08:00
    你这个问题可能的解决方案有两种:
    第一种看文件的属性,Git for Windows ( MINGW64 )的 SSH 可能要求 SSH 私钥的 filemode 是 0600 ,你可以在 Git for Windows (MINGW64) 的 bash 中 stat /c/Users/Username/.ssh/id_rsa ,如果不正确,则使用 chmod 0600 /c/Users/Username/.ssh/id_rsa 然后重试。
    第二种是看文件换行符,Git for Windows ( MINGW64 )的 SSH 需要 LF 的换行符,而 Windows 移植的 SSH 可能能处理 CRLF ,将私钥的换行符换回去就可以了。

    在 cmd 中的 SSH 实际上是微软 PowerShell 团队移植的 [OpenSSH]( https://github.com/PowerShell/Win32-OpenSSH),与 Git for Windows ( MINGW64 )的并不一致。

    这里我也只是做个推测,并没有验证。
    xiri
        5
    xiri  
       2023-07-18 10:36:52 +08:00 via Android
    建议检查一下你的 id_rsa 文件中的换行符,如果是 CRLF (\r\n )换行就会出现 cmd 正常( windows 自带的 ssh )但是 git bash 出现 invalid format 的情况
    LxnChan
        6
    LxnChan  
    OP
       2023-07-18 10:54:11 +08:00
    @forcecharlie @xiri
    刚看了一下确实是公私钥都是 CRLF ,刚才也解决了
    那么我是怎么解决的呢?
    我在 git 官网上重新下载了 Windows 版的 Git ,寻思死马当活马医,在中间有一步选 OpenSSH 库,要求选内置还是 Windows 自带,我选了 Windows 自带,于是就能正常提交了。
    现在看来应该就是换行符的问题,总之谢谢了
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1058 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 23:05 PVG 07:05 LAX 16:05 JFK 19:05
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86