git@gitlab.com:权限被拒绝(公钥)。致命:无法从远程存储库读取

git@gitlab.com: Permission denied (publickey). fatal: Could not read from remote repository

我正在使用 macOS Catalina。 我已经在 GitLab 上有一个存储库并分配了 SSH-key 现在我想从终端创建另一个存储库。我执行以下操作:

git config user.name my_name
git config user.email my_email
git init

然后我明白了:

Initialized empty Git repository in directory

到目前为止一切顺利。

git remote add origin git@gitlab.com:my_name/repo.git
git add .
git commit -m 'commit'
git push -u origin master

然后我得到以下错误:

git@gitlab.com: Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

然后我转到我已有的存储库并尝试推送到那里,一切正常所以我想我对 SSH-key 没有问题。我知道这是互联网上一个非常常见的问题,但 none 的答案解决了我的问题。

首先,你应该只在 git init . 之后得到 "Initialized empty Git repository in directory",而不是在 git remote add origin ...

之后

其次,使用 GitLab,您可以 push to create a new project, as illustrated in this MR,从 GitLab 10.5(2018 年第一季度)开始

第三,如果错误仍然存​​在,则密钥有问题。
测试它:

ssh -Tv git@gitlab.com

还有

git -c core.sshCommand="ssh -v" push -u origin master

生成有效密钥:

ssh-keygen -t rsa -P "" -m PEM

并将您的新 id_rsa.pub 注册到您的 GitLab 配置文件。

我尝试了上述所有解决方案,但 none 有效。然后我阅读日志,发现它正在特定文件夹中寻找密钥,我创建了密钥并将其也添加到我的 Gitlab 配置文件中。然后它开始工作了。

Git 身份验证问题可以通过阅读 git 的日志并在适当的文件夹下创建适当的 SSH 密钥来解决。

Steps
  1. 运行下面的命令,它会尝试推送代码,如果不成功,它会显示错误所在

    git -c core.sshCommand="ssh -v" push -u origin master
    
    

  1. 现在,我们可以生成一个新的 SSH 密钥,下面的命令将在工作文件夹中生成一个密钥。

    ssh-keygen -t rsa -P "" -m PEM
    
    

它会询问密钥名称,你可以给 id_rsa 作为密钥名称或 Bash 显示为“尝试私钥:c:/Users/Dell/ 的任何名称。 ssh/”。 在 bash 中生成密钥后,您的工作目录将拥有密钥。

  1. 在第 1 步中 运行 执行命令时,您会看到它正在查找私钥的文件夹。在我的例子中是“c:/Users/Dell/.ssh/id_rsa”

  1. 我们应该将工作文件夹中生成的密钥放入此文件夹

  1. 我们还应确保将 SSH 密钥添加到 Gitlab 帐户。 单击您的 Git 实验室帐户 MyProfile 和 select 首选项。 Click to see how to add SSH to your Gitlab account

  2. 点击SSH密钥菜单,使用记事本打开生成的密钥文件,从记事本中复制密钥内容粘贴到SSH密钥文本编辑器中并保存。 Click to see how to add SSH Key to your Gitlab account

  3. 再次,运行 以下命令并立即检查。代码将被推送。

    git -c core.sshCommand="ssh -v" push -u origin master
    
    

代码将被推送。

发生了同样的问题。 我使用 HTTPS 而不是 SSH

(我在 GitLab 中创建 repo 后按照说明步骤操作,但这导致了权限问题。这是因为要上传 ssh pub 密钥)

这些步骤在不使用 SSH 的情况下也有效

  1. 在 GitLab 中创建一个 repository/project

  2. 我删除了 .git(这导致了之前的权限问题。为了重新开始)

  3. git 配置 --global user.name “user_name”

    git 配置 --global user.email "user.email@gmail.com"

  4. git init .

  5. git remote add origin https://gitlab.com/user.account/user_project.git

  6. git add .git commit -m "initial commit"

  7. git push -u origin master

它会询问用户名和密码。然后固定。