9

我正在使用 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. 我知道这是互联网上一个非常常见的问题,但没有一个答案能解决我的问题。

4

3 回答 3

12

git init .首先,您应该仅在 a之后而不是在 a之后获得“目录中已初始化的空 Git 存储库”git remote add origin ...

其次,使用 GitLab,您可以推送创建一个新项目,如本 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 个人资料中。

于 2020-01-08T21:52:20.767 回答
4

我尝试了上述所有解决方案,但都没有奏效。然后我阅读了日志,发现它正在特定文件夹中寻找密钥,我创建了密钥并将其添加到我的 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 中生成密钥后,您的工作目录将拥有该密钥。

工作目录上的 SSH 密钥

  1. 在步骤 1 中运行命令时,您将看到它正在其中查找私钥的文件夹。就我而言,它是“c:/Users/Dell/.ssh/id_rsa”

Git Bash 的输出

  1. 我们应该把工作文件夹中生成的密钥放到这个文件夹中

必须复制图像的文件夹路径

  1. 我们还应该确保将 SSH 密钥添加到 Gitlab 帐户。单击您的 Gitlab 帐户 MyProfile 并选择首选项。 点击查看如何添加 SSH 到你的 Gitlab 账号  </p>

  2. 单击 SSH 密钥菜单,使用记事本打开生成的密钥文件,然后从记事本中复制密钥内容并将其粘贴到 SSH 密钥文本编辑器中并保存。 点击查看如何添加 SSH Key 到你的 Gitlab 账户

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

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

代码将被推送。

在 Git 中读取并推送新密钥

于 2021-05-17T19:39:28.160 回答
0

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

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

这些步骤在不使用 SSH 的情况下工作

  1. 在 GitLab 中创建存储库/项目

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

  3. git config --global user.name "user_name"

    git config --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

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

于 2021-06-30T17:08:57.443 回答