Gitlab密钥格式问题

16

我遇到了一个奇怪的情况,我正在使用GitLab帐户来处理我的代码。我正在使用SSH协议访问仓库。我能够拉取代码,但是当我尝试推送代码时,我收到以下错误。这可能是因为我自己的原因而出现的小问题。但是,我已经将密钥存储在我的GitLab配置文件中,并且可以用它来拉取代码

错误:

$ git push origin master
key_load_public: invalid format
Enter passphrase for key '/c/Users/username/.ssh/id_rsa':
Access denied.
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

在创建SSH密钥时使用的口令,您需要输入该口令并确保已将该SSH密钥添加到您的GitLab帐户中。即使它不起作用,请创建一个新的SSH密钥并将其添加到GitLab中。 - Priyanshu
@PriyanshuShekhar,我也尝试了那个选项。但仍然无法推送代码。同样的ssh密钥怎么能让我拉取代码却不能推送呢? - jqheart
你确定你已经导出了正确的文件吗?这个密钥是如何生成的? - jaroslawj
@PriyanshuShekhar, 不是的,这是一台全新的机器。我只用这个密钥来登录这个GitLab账户。 - jqheart
1
好的,可能还有两个问题:一些与键缓存有关的问题 - 在添加新键后应该清除它,以及第二个键格式:https://gitlab.com/gitlab-org/gitlab-ce/issues/786 - jaroslawj
显示剩余3条评论
5个回答

23

最终我已经解决了这个问题并且为其他用户发帖分享。如果由putty生成的密钥不能帮助您访问gitlab仓库,请尝试在gitbash终端使用命令ssh-keygen生成密钥,并将文件保存在您的用户账户的.ssh文件夹中。

Linux风格的密钥生成让我的生活变得更加容易,因为我曾尝试在Windows环境下使用putty keygen生成密钥。

希望这能帮助到某些人。


3
这对我的情况有用,我曾经使用putty-keygen并不断收到key_load_public: invalid format错误。通过使用Cygwin的ssh-keygen工具生成密钥来解决了这个问题。 - M. Sfakianos
2
也在Bitbucket工作过。 - h-rai
1
我被 GitLab 导向使用 PuTTYGen,但这个解决方案适用于我。GitLab 帮助文档应更新为此解决方案,尤其是因为它不需要额外下载。 - P-Gn
2
在GitLab上我也遇到了同样的问题。尝试从Puttygen导出密钥到OpenSSH,但仍然无法正常工作。使用ssh-keygen解决了问题。 - maszynka

18

PuTTYGen可以生成正确的OpenSSH密钥。

  1. 生成您的密钥文件,保存私钥(带或不带密码)
  2. 将您的用户名/电子邮件地址添加为注释
  3. 复制生成的密钥内容并粘贴到id_rsa.pub中
  4. 使用菜单导出OpenSSH私钥,并将其保存为id_rsa

Export OpenSSH Key


你要将哪个文件加载到Putty代理(PAGEANT.exe)中? - Leonel
@Leonel,这不是针对Putty代理的,抱歉。 - Glen Blanchard

2

我通过重新生成我的公钥(id_es.pub)从我的私钥(id_es)修复了错误:

ssh-keygen -f ~/.ssh/id_es -y > ~/.ssh/id_es.pub

2
---- BEGIN SSH2 PUBLIC KEY ----
Comment: "my.email@example.com"
AAAAB3NzaC1ycxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxx=
---- END SSH2 PUBLIC KEY ----

目前,您需要手动提取密钥(删除其他行)并在其前面添加“ssh-rsa”。就像这样:

ssh-rsa AAAAB3NzaC1ycxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxx=

Gitlab自动执行此操作将更加方便。

https://gitlab.com/gitlab-org/gitlab-foss/-/issues/786


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接