我格式化了我的Windows 7笔记本电脑,并试图让git安装程序再次工作,我安装了git和源代码树应用程序。
我从gitlab中删除了SSH密钥,并使用ssh-keygen
重新生成了密钥。但是当我尝试在gitlab中添加SSH Key时,它会抛出以下异常:
Key is invalid
Fingerprint has already been taken
Fingerprint cannot be generated
因此,我无法从源代码树应用程序克隆git存储库,因为gitlab无法验证SSH密钥。我跟随查询在谷歌组的gitlab,但他们似乎都没有解决我的问题。是否有任何解决方法或步骤来获得gitlab接受的SSH密钥?
我试图添加的公钥已经与'work' Gitlab帐户一起使用,我在试图与'personal' Gitlab帐户使用相同的密钥时收到了上述错误。
解决方案 -在同一台机器上添加另一个公钥,并与'personal' gitlab帐户一起使用(都在同一台机器上)。
导航到配置文件中的.ssh文件夹(即使在windows上也可以)并运行命令
ssh-keygen -t rsa
当被要求提供文件名时,给出另一个文件名id_rsa_2(或任何其他)。输入无密码短语(或其他)。你最终会得到id_rsa_2和id_rsa_2.pub
使用命令
cat id_rsa_2.pub
复制并保存密钥到'personal' Gitlab帐户。
在。ssh文件夹中创建一个名为config的无扩展名的文件
把这段配置放到你的配置文件中
Host gitlab.com
HostName gitlab.com
IdentityFile C:Users<user name>.sshid_rsa
User <user name>
Host gitlab_2
HostName gitlab.com
IdentityFile C:Users<user name>.sshid_rsa_2
User <user name>
现在当你想使用'personal' gitlab帐户时,只需在git url中更改别名即可操作远程服务器。
例如而不是使用
git克隆git@ gitlab.com :..............
简单地使用
git克隆git@ gitlab_2 :...............
这样做将使用gitlab.com的第二个配置(来自'config'文件),并将使用新的id_rsa_2密钥对进行身份验证。
在此链接查找有关上述命令的更多信息
https://clubmate.fi/how-to-setup-and-manage-multiple-ssh-keys/
Gitlab可以在您过去项目的另一个帐户中使用您的ssh-key -所以,解决此问题的最简单方法是创建新的ssh-pair,将其添加到ssh-agent并添加id_rsa2。发布到你的gitlab账号
$ ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
当它问:
Generating public/private rsa key pair.
Enter file in which to save the key (/home/<NAME>/.ssh/id_rsa):
Please enter /home/<NAME>/.ssh/id_rsa2
$ ssh-add ~/.ssh/id_rsa2
确保删除base64编码字符串末尾的所有内容。同时删除所有换行符,使字符串不包含换行符。
这对我起了作用。
我得到了同样的错误,因为我已经在gitlab中添加了这个键到另一个帐户。
在我的例子中,我已经在另一个repo中添加了公钥。
修复:
- 在同一个GitLab页面(Settings ->库→部署键)
- 向下滚动并单击选项卡"私人可访问的部署键"
- 找到您的"部署键"
那你就可以走了。
我尝试了所有已经建议的方法,但都没有效果。最终为我工作的是使用命令而不是从文本编辑器(在我的情况下是nano
)复制公钥:
pbcopy < ~/.ssh/id_rsa.pub
如果需要,将id_rsa
替换为我的特定键名。上面的命令在OSX上运行。其他系统需要不同的命令,它们列在以下页面:http://doc.gitlab.com/ce/ssh/README.html.
我的SSH密钥存储在旧的Gitlab帐户中,我删除了它,问题解决了。
新建一个关键h1> 上解决方案都不适合我,所以我备份了我的旧密钥并创建了一个新的。 https://help.github.com/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent/
#osx10.12.6
可能是文本编辑器的问题。尝试用记事本打开密钥文件,而不是notepad++。
还要在密钥的开头添加"ssh-rsa"。
在我的例子中,我的公钥必须以某种方式附加到特定的存储库。
我回去删除了两个旧的存储库,之后它允许我将公钥添加到我的GitLab帐户中,没有任何问题。
添加新的ssh密钥该ssh密钥可能被其他用户使用。当别人使用ssh密钥时,你必须得到这个错误,不要担心创建一个新的ssh密钥并使用主题。
在您尝试添加部署键的同一个gitlab设置页面中向下滚动一点,您将发现一个名为"private accessible deploy keys"的选项卡。点击它,你会发现你想要添加的键列在那里。点击"启用"从它旁边,它会工作!
如果这些建议都不起作用:
首先-不要处理安全密钥耗尽或匆忙的情况,不要犯愚蠢的错误(我的情况)。
第二-复制为GitLab部署密钥公钥,而不是私钥(我的情况也是如此,尽管我很清楚密钥是如何工作的,只是赶时间)。
在我的例子中,我之前没有向任何其他项目添加现有的Deploy键,并且我不是任何项目的成员。
为了能够为新项目启用部署键,您需要将自己添加为已经启用该键的项目的成员。
然后在新建项目-设置-存储库-部署密钥-私有访问部署密钥列表中,您将看到此密钥和启用按钮。
在本文档中可以找到答案https://gitlab-docs.creationline.com/ee/user/project/deploy_keys/
在private accessible deploy keys选项卡中,您可以启用private已导入到其他项目中的密钥。如果你可以访问这些键,因为你有:
先前自己在不同的项目中上传了密钥。
- 您是导入密钥的其他项目的维护者或所有者。
但是如果你有GitLab管理员配置文件,即使有&;user &;也足够了。作为项目成员的特权。
您可以从您的另一个GitLab帐户中删除此SSH密钥,然后您可以将此SSH密钥添加到您的GitLab帐户