Getting permission denied (public key) on gitlab
我的问题是我不能从Gitlab推或取东西。但是,我可以克隆(通过http或ssh)。当我尝试按下时,会出现此错误:
Permission denied (publickey) fatal : Could not read from remote repository
从我看过的所有线索来看,我做了以下工作:
- 在我的计算机上设置一个ssh密钥并将该公钥添加到Gitlab
- 完成配置——用户名和电子邮件的全局配置
- 通过ssh和http克隆,以检查是否可以解决问题
- 完成ssh-t [email protected]命令
如果你对如何解决我的问题有任何见解,我将不胜感激。
我搜索了很久才找到这个。这对我来说会很好。
现在试一试,肯定会成功的。
步骤1:在~/.ssh/文件夹中添加了一个配置文件,它看起来像
1 2 3 4 5 | User git Hostname gitlab.com IdentityFile ~/.ssh/id_rsa_gitlab TCPKeepAlive yes IdentitiesOnly yes |
第二步:克隆没有sudo的git repo。
我认为简单的解决方案是向认证代理添加私钥(如果您的密钥不是
1 | ssh-add ~/.ssh/<your private key> |
你基本上让
此外,您可以永久添加它。
确保您没有运行
在我的例子中,它在wsl(Linux的Windows子系统)中不起作用。
当我启动WSL时,我必须
- 启动ssh-agent_uedcx1〔13〕。
- 向ssh代理添加密钥:
ssh-add ~/.ssh/id_rsa 。 - 如果出现提示,请输入密码
现在连接工作。我们可以用
详细说明:Git via SSH from Windows返回权限被拒绝
在我的例子中,这不是Gitlab问题,而是sshd配置问题。除了用户列表外,ssh服务器不允许连接。远程连接到Gitlab的用户Git不在该列表中。所以,先检查一下这个。
您可以在
1 | AllowUsers user1 user2 user3 git |
如果您使用的是Linux或Macox,只需在终端中尝试:
1 | ssh-add -l |
如果没有返回,请尝试以下操作:
1 | ssh-add |
它必须在~/.ssh/id_rsa中创建标识
重试后:
1 | ssh-add -l |
它必须返回您的身份,因此在重试克隆后,它必须工作
注意:不要忘记在配置文件Gitlab中添加ssh密钥。
谢谢
要做的步骤,有相同的错误,但我修正了它。Gitlab想要ssh rsa,所以下面是运行ssh for rsa的代码
[email protected]是您的gitlab帐户电子邮件
它将提示您输入,因此在提示下面的代码后,只需点击Enter。
输入保存密钥的文件(/home/yourdsktopname/.ssh/id_rsa):
它将再次提示您输入,因此在提示下面的代码后,只需点击Enter。
输入密码短语(无密码短语为空):
它将再次提示您最后一次输入,因此在提示下面的代码后单击Enter。
再次输入相同的密码:
您将显示您的ssh rsa generate。
登录您的Gitlab帐户,转到右侧的导航栏,您将获得设置,在左侧的侧栏中,您将获得ssh密钥。进去吧。
查看上面的提示,要求您输入,您将获得ssh rsa的路径。
转到ssh文件夹并获取id_rsa.pub
打开它,拿到钥匙,复制粘贴到Gitlab,你就快完成了。
审核人:
你会得到:
完成。
我让gitlab和docker一起运行,这是我解决问题的方法。
发现在docker/var/log/gitlab/sshd/current中有多个消息出现:
Authentication refused: bad ownership or modes for file /var/opt/gitlab/.ssh/authorized_keys
在此之后,我将该文件的所有权从99:users更改为git:users,并具有:
chown git:users authorized_keys
转到终端,重新生成ssh密钥。
然后将公钥复制到GitLabs平台。它通常从ssh rsa开始。
我有同样的问题,我通过添加一个新的ssh密钥解决了它:
When you have multiple git account and you want different ssh key
You have to follow same step for generating the ssh key, but be sure
you
1 | ssh-keygen -t ed25519 -C"[email protected]" |
输入要保存的路径(例如:my pc/desktop/.ssh/ed25519)
将公钥添加到Gitlab(如何将ssh密钥添加到Gitlab)
You have to new ssh identity using the below comand
1 | ssh-add ~/my-pc/Desktop/.ssh/ed25519 |
主要有两件事
您的.ssh文件夹中必须有id_rsa.pub和id_rsa(private)密钥(应该在您的主文件夹中。如果没有,请创建它,然后放入您的密钥)。如果您对密钥文件进行了不同的命名,它将不起作用。
将id_rsa的权限更改为chmod 400~/.ssh/id_rsa
我就这样解决了……
使用此命令为Windows生成了一个密钥:
1 | ssh-keygen -t rsa -C"[email protected]" -b 4096 |
但问题是,运行此命令后,它弹出一行:"输入保存密钥的文件(/c/users/xxx/.ssh/id_rsa):"在这里,我只给出了文件名,因为我的密钥保存在我的pwd中,而不是给定的位置。当我执行"git clone"时,它假定密钥位于"/c/users/xxx/.ssh/id_rsa"位置,但没有找到,因此它抛出了错误。
在生成密钥时,生成了2个文件,称为"file1"&;"file1.pub"。我将这两个文件重命名为
1 | file1 -> id_rsa |
和
1 | file1.pub -> id_rsa.pub |
都放在
我使用Ubuntu18.04,这实际上是我本地机器的许可问题。当我为.git文件夹设置读/写权限时,问题就消失了。
嗯,我也遇到了同样的问题,在尝试了@khan提出的答案之后。但是,我只能通过将.git/config文件中的源URL更改为https地址来使其正常工作:https://gitlab.com/mygitlabusername/mygitproject.git
由于通过ssh的访问被拒绝,我发现使用https不应该是一个问题。但是,每次推送到AT存储库时,它都会询问您的用户名和密码。
我的问题是,我把
我把我的