我的问题是我不能从GitLab中push或fetch。但是,我可以克隆(通过HTTP或SSH)。当我试图推的时候,我得到这个错误:
权限被拒绝(publickey)致命:无法从远程存储库读取
从我看过的所有线索来看,以下是我所做的:
在我的电脑上设置一个SSH密钥,并将公钥添加到GitLab
完成了用户名和电子邮件的config -global
通过SSH和HTTP克隆,以检查它是否能解决问题
执行ssh -T git@gitlab.com命令
如果您对如何解决我的问题有任何见解,我将不胜感激。
步骤1:
在~/中添加了一个配置文件。Ssh /config文件,看起来像
User git
Hostname gitlab.com
IdentityFile ~/.ssh/id_rsa_gitlab
TCPKeepAlive yes
IdentitiesOnly yes
步骤2:克隆没有sudo的git repo。
文档:https://gitlab.com/help/ssh/README working-with-non-default-ssh-key-pair-paths
**有时在~/中有配置。ssh/config,但是,IdentityFile路径错误。您可以像这样检查文件名ls ~/.ssh/。gitlab的文件通常是id_ed25519。因此正确的配置是IdentityFile ~/.ssh/id_ed25519
我有gitlab运行docker,这是我所做的解决我的问题。
发现在docker /var/log/gitlab/sshd/current内部出现了多条消息:
身份验证被拒绝:文件/var/opt/gitlab/.ssh/authorized_keys的所有权或模式错误
之后,我将该文件的所有权从99:users更改为git:users:
Chown git:users authorized_keys
我花了好几个小时才修好的。下面的方法对我很有效。
在终端上执行这些命令。
ssh-keygen -t rsa -C "<your email address>" -b 4096 -t ed25519
将生成的密钥重命名为:id_rsa和id_rsa。将生成的公钥添加到gitlab服务器。
然后将ssh密钥添加到ssh代理,如下所示。
启动ssh-agent
Eval "$(ssh-agent -s)"
如果生成的密钥名称不同,请在下面的命令中替换id_rsa
ssh-add ~ / . ssh / id_rsa
要测试连接,请使用此命令。
ssh -T git@<git lab server url>
要排除故障,请使用以下命令。
ssh -Tv git@<git lab server url>
ssh -vvv git@<git lab server url>
现在可以将项目克隆到本地环境。
另一个可能导致这种行为的问题是当你有2个可能的%HOME%-locations的设置时。
我使用的是个人电脑,其中一些文档存储在本地,另一些存储在网络驱动器上。一些应用程序认为C:\Users\<MyUserName>\是my %home%,另一些应用程序认为U:\是home。
原来ssh-keygen把我的私钥放在C:\users\<MyUserName>\下,ssh -T和ssh -v也在那里查找。
所以一切似乎都很好,除了git克隆,git推和其他人在U:\寻找一个键。
它失败了,所以我得到了前面提到的错误。
我花了一个小时才找到答案,但最终解决方案很简单:我复制了C:\Users\<MyUserName>\中的所有内容。ssh到U:\.ssh