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

bel*_*liz 5 iterm ssh-keys git-push gitlab git-init

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

git config user.name my_name
git config user.email my_email
git init
Run Code Online (Sandbox Code Playgroud)

然后我得到这个:

Initialized empty Git repository in directory
Run Code Online (Sandbox Code Playgroud)

到现在为止还挺好。

git remote add origin git@gitlab.com:my_name/repo.git
git add .
git commit -m 'commit'
git push -u origin master
Run Code Online (Sandbox Code Playgroud)

然后我收到以下错误:

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.
Run Code Online (Sandbox Code Playgroud)

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

Von*_*onC 9

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

其次,使用 GitLab,您可以推送创建一个新项目,如本 MR 中所示,从 GitLab 10.5(2018 年第一季度)开始

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

ssh -Tv git@gitlab.com
Run Code Online (Sandbox Code Playgroud)

git -c core.sshCommand="ssh -v" push -u origin master
Run Code Online (Sandbox Code Playgroud)

要生成有效的密钥:

ssh-keygen -t rsa -P "" -m PEM
Run Code Online (Sandbox Code Playgroud)

并将您的新 id_rsa.pub 注册到您的 GitLab 个人资料。


ven*_*kat 5

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

\n

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

\n
Steps\n
Run Code Online (Sandbox Code Playgroud)\n
    \n
  1. 运行以下命令,它将尝试推送代码,如果不成功,则会显示错误所在

    \n
    git -c core.sshCommand="ssh -v" push -u origin master\n\n
    Run Code Online (Sandbox Code Playgroud)\n
  2. \n
\n

尝试推送代码时出错

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

    \n
    ssh-keygen -t rsa -P "" -m PEM\n\n
    Run Code Online (Sandbox Code Playgroud)\n
  2. \n
\n

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

\n

工作目录上的 SSH 密钥

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

Git Bash 的输出

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

\xe2\x80\x83 需要复制图像的文件夹路径

\n
    \n
  1. 我们还应该确保将 SSH 密钥添加到 Gitlab 帐户。\n单击您的 Gitlab 帐户“我的个人资料”并选择首选项。\n单击以查看如何将 SSH 添加到您的 Gitlab 帐户\n\xe2\x80\x83

    \n
  2. \n
  3. 单击“SSH 密钥”菜单,使用记事本打开生成的密钥文件,然后从记事本复制密钥内容并将其粘贴到 SSH 密钥文本编辑器中并保存。\nSSH 密钥添加到您的 Gitlab 帐户

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

    \n
    git -c core.sshCommand="ssh -v" push -u origin master\n\n
    Run Code Online (Sandbox Code Playgroud)\n
  6. \n
\n

代码将被推送。

\n

新密钥被读取并推送到 Git 中

\n