当前位置: 首页>>技术教程>>正文


在gitlab上获得权限被拒绝(公钥)

, , ,

问题描述

我的问题是我不能从GitLab推送或获取。但是,我可以克隆(通过HTTP或通过SSH)。我尝试推送时出现此错误:

Permission denied (publickey) fatal : Could not read from remote repository

从我看过的所有主题来看,这就是我所做的:

  • 在我的计算机上设置SSH密钥并将公钥添加到GitLab

  • 用户名和电子邮件完成配置–global

  • 通过SSH和HTTP进行克隆,以检查是否可以解决问题

  • 完成ssh -T git@gitlab.com命令

如果您对如何解决我的问题有任何见解,我们将不胜感激。

最佳解决思路

经过大量搜索后我发现了这个。它对我来说非常好。

  1. 像cmd一样去”Git Bash”。右键单击并“以管理员身份运行”。

  2. 键入ssh-keygen

  3. 按enter键。

  4. 它会要求您将密钥保存到特定目录。

  5. 按enter键。它会提示您输入密码或输入无密码。

  6. 将为特定目录创建公钥。

  7. 现在转到目录并打开.ssh文件夹。

  8. 你会看到一个文件id_rsa.pub。在记事本上打开它。从中复制所有文本。

  9. 转到https://gitlab.com/profile/keys

  10. 粘贴在”key”文本字段中。

  11. 现在点击下面的”Title”。它会自动填满。

  12. 然后单击”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进行测试

笔记:

第六种思路

就我而言,它不是一个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的代码

  1. ssh-keygen -o -t rsa -b 4096 -C "name@gmail.com"

name@gmail.com是您的gitlab帐户电子邮件

  1. 它会提示你输入所以只需在下面的代码提示后按Enter键,输入要保存密钥的文件(/home/yourDesktopName/.ssh/id_rsa):

  2. 它将再次提示您输入,因此只需在下面的代码提示后按Enter键,输入密码短语(没有密码短语为空):

  3. 它将再次提示你输入的最后一个,所以在下面的代码提示后按Enter键,再次输入相同的密码:

  4. 您将显示您的ssh-rsa生成。

  5. 登录您的Gitlab帐户并转到右边的导航栏,您将获得设置,在左侧边栏中您将获得ssh密钥。输入它。

  6. 查看要求您输入的提示上方,您将获得ssh-rsa的路径。

  7. 转到SSH文件夹并获取id_rsa.pub

  8. 打开它并获取密钥和复制粘贴到Gitlab,你几乎要完成。

  9. 检查:ssh -T git@gitlab.com

  10. 你会得到:Welcome to GitLab, @joy4!

  11. 完成。

第九种思路

我有同样的问题,我通过添加一个新的ssh密钥来解决它:

  1. ssh-keygen -t ed25519 -C "email@example.com"

  2. 将您的公共SSH密钥复制到剪贴板(在我的案例中,在Linux上为xclip -sel clip < ~/.ssh/id_ed25519.pub)

  3. 在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

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/7123.html,未经允许,请勿转载。