问题描述
我的问题是我不能从GitLab推送或获取。但是,我可以克隆(通过HTTP或通过SSH)。我尝试推送时出现此错误:
Permission denied (publickey) fatal : Could not read from remote repository
从我看过的所有主题来看,这就是我所做的:
-
在我的计算机上设置SSH密钥并将公钥添加到GitLab
-
用户名和电子邮件完成配置–global
-
通过SSH和HTTP进行克隆,以检查是否可以解决问题
-
完成ssh -T git@gitlab.com命令
如果您对如何解决我的问题有任何见解,我们将不胜感激。
最佳解决思路
经过大量搜索后我发现了这个。它对我来说非常好。
-
像cmd一样去”Git Bash”。右键单击并“以管理员身份运行”。
-
键入
ssh-keygen
-
按enter键。
-
它会要求您将密钥保存到特定目录。
-
按enter键。它会提示您输入密码或输入无密码。
-
将为特定目录创建公钥。
-
现在转到目录并打开
.ssh
文件夹。 -
你会看到一个文件
id_rsa.pub
。在记事本上打开它。从中复制所有文本。 -
粘贴在”key”文本字段中。
-
现在点击下面的”Title”。它会自动填满。
-
然后单击”Add key”。
现在试一试,它肯定会起作用。
次佳解决思路
第1步:在〜/.ssh /文件夹中添加了一个配置文件
User git
Hostname gitlab.com
IdentityFile ~/.ssh/id_rsa_gitlab
TCPKeepAlive yes
IdentitiesOnly yes
第2步:只需克隆没有sudo的git repo。
第三种解决思路
我认为简单的解决方案是将私钥添加到身份验证代理(如果您的密钥不是~/.ssh/id_rsa
),
ssh-add ~/.ssh/<your private key>
你基本上让ssh-agent
来处理它。
此外,你可以add it permanently。
第四种思路
确保你没有运行sudo git clone git@gitlab.com:project/somethiing.git
,否则ssh会查看/root/.ssh
而不是你上传的密钥~/.ssh/id_rsa
第五种思路
在我的情况下,它在WSL(适用于Linux的Windows子系统)中不起作用。
当我启动WSL时,我必须
-
启动ssh-agent_
eval $(ssh-agent -s)
-
将密钥添加到ssh-agent:
ssh-add ~/.ssh/id_rsa
-
如果出现提示,请输入密码
现在连接工作。我们可以用ssh -T git@github.com
进行测试
笔记:
-
weasel-pageant允许我们重用WSL中PuTTY pageant中加载的ssh密钥
第六种思路
就我而言,它不是一个gitlab问题,而是一个sshd配置问题。除了用户列表之外,ssh服务器不允许连接。用户git,即远程连接到gitlab的用户git,不在该列表中。所以,先检查一下。
您可以在/etc/ssh/sshd_config
中检查您的ssh服务器配置。如果您有一行选项AllowUsers
,请添加git:
AllowUsers user1 user2 user3 git
第七种思路
如果你在Linux或macox,只需在终端尝试:
ssh-add -l
如果它什么也没有返回,试试这个:
ssh-add
它必须在〜/.ssh /id_rsa中创建标识
重试后:
ssh-add -l
它必须返回你的身份,所以在重试克隆后,它必须工作
注意:不要忘记在你的个人资料gitlab中添加你的ssh密钥
谢谢
第八种思路
要做的步骤,得到相同的错误,但我修复了它。 Gitlab想要ssh-rsa,所以下面是为rsa运行ssh的代码
-
ssh-keygen -o -t rsa -b 4096 -C "name@gmail.com"
name@gmail.com是您的gitlab帐户电子邮件
-
它会提示你输入所以只需在下面的代码提示后按Enter键,输入要保存密钥的文件(/home/yourDesktopName/.ssh/id_rsa):
-
它将再次提示您输入,因此只需在下面的代码提示后按Enter键,输入密码短语(没有密码短语为空):
-
它将再次提示你输入的最后一个,所以在下面的代码提示后按Enter键,再次输入相同的密码:
-
您将显示您的ssh-rsa生成。
-
登录您的Gitlab帐户并转到右边的导航栏,您将获得设置,在左侧边栏中您将获得ssh密钥。输入它。
-
查看要求您输入的提示上方,您将获得ssh-rsa的路径。
-
转到SSH文件夹并获取id_rsa.pub
-
打开它并获取密钥和复制粘贴到Gitlab,你几乎要完成。
-
检查:
ssh -T git@gitlab.com
-
你会得到:
Welcome to GitLab, @joy4!
-
完成。
第九种思路
我有同样的问题,我通过添加一个新的ssh密钥来解决它:
-
ssh-keygen -t ed25519 -C "email@example.com"
-
将您的公共SSH密钥复制到剪贴板(在我的案例中,在Linux上为
xclip -sel clip < ~/.ssh/id_ed25519.pub
) -
在gitlab上,转到
settings=>ssh
键并经过新密钥
第十种思路
我有使用docker运行的gitlab,这就是我为解决问题而采取的措施。
发现在docker /var /log /gitlab /sshd /current里面有多个消息出现:
Authentication refused: bad ownership or modes for file /var/opt/gitlab/.ssh/authorized_keys
之后我将该文件的所有权从99:用户更改为git:用户:
chown git:users authorized_keys