我正面临一个奇怪的情况,我使用gitlab帐户来处理我的代码。我正在使用ssh协议来访问repo。我能够拉取代码但我在尝试推送代码时收到以下错误。这对我来说可能是愚蠢的。但是我将密钥存储在我的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.
答案 0 :(得分:21)
最后,我能够解决此问题,并将其发布给其他用户。如果 putty 生成的密钥无法帮助您访问gitlab repo,请尝试使用命令ssh-keygen
从 gitbash 终端生成密钥并保存文件您的用户帐户的.ssh
文件夹。
Linux风格的密钥生成使我的生活变得轻松,因为我试图使用putty keygen在windows环境中生成密钥。
希望这有助于某人。
答案 1 :(得分:16)
PuTTYGen可以生成正确的OpenSSH密钥。
答案 2 :(得分:2)
我通过从我的私钥(id_es.pub
)重新生成我的公钥(id_es
)修复了我的错误:
ssh-keygen -f ~/.ssh/id_es -y > ~/.ssh/id_es.pub
答案 3 :(得分:0)
如果您上传'vanilla'putty键,可能会在此处描述解决方案:https://gitlab.com/gitlab-org/gitlab-ce/issues/786
答案 4 :(得分:0)
---- 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自动执行此操作会更方便。