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
运行下面的命令,它会尝试推送代码,如果不成功,它会显示错误所在
git -c core.sshCommand="ssh -v" push -u origin master
现在,我们可以生成一个新的 SSH 密钥,下面的命令将在工作文件夹中生成一个密钥。
ssh-keygen -t rsa -P "" -m PEM
它会询问密钥名称,你可以给 id_rsa 作为密钥名称或 Bash 显示为“尝试私钥:c:/Users/Dell/ 的任何名称。 ssh/”。
在 bash 中生成密钥后,您的工作目录将拥有密钥。
- 在第 1 步中 运行 执行命令时,您会看到它正在查找私钥的文件夹。在我的例子中是“c:/Users/Dell/.ssh/id_rsa”
- 我们应该将工作文件夹中生成的密钥放入此文件夹
我们还应确保将 SSH 密钥添加到 Gitlab 帐户。
单击您的 Git 实验室帐户 MyProfile 和 select 首选项。
Click to see how to add SSH to your Gitlab account
点击SSH密钥菜单,使用记事本打开生成的密钥文件,从记事本中复制密钥内容粘贴到SSH密钥文本编辑器中并保存。
Click to see how to add SSH Key to your Gitlab account
再次,运行 以下命令并立即检查。代码将被推送。
git -c core.sshCommand="ssh -v" push -u origin master
代码将被推送。
发生了同样的问题。
我使用 HTTPS
而不是 SSH
(我在 GitLab 中创建 repo 后按照说明步骤操作,但这导致了权限问题。这是因为要上传 ssh pub 密钥)
这些步骤在不使用 SSH 的情况下也有效
在 GitLab 中创建一个 repository/project
我删除了 .git(这导致了之前的权限问题。为了重新开始)
git 配置 --global user.name “user_name”
git 配置 --global user.email "user.email@gmail.com"
git init .
git remote add origin https://gitlab.com/user.account/user_project.git
git add .
和 git commit -m "initial commit"
git push -u origin master
它会询问用户名和密码。然后固定。
我正在使用 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
运行下面的命令,它会尝试推送代码,如果不成功,它会显示错误所在
git -c core.sshCommand="ssh -v" push -u origin master
现在,我们可以生成一个新的 SSH 密钥,下面的命令将在工作文件夹中生成一个密钥。
ssh-keygen -t rsa -P "" -m PEM
它会询问密钥名称,你可以给 id_rsa 作为密钥名称或 Bash 显示为“尝试私钥:c:/Users/Dell/ 的任何名称。 ssh/”。 在 bash 中生成密钥后,您的工作目录将拥有密钥。
- 在第 1 步中 运行 执行命令时,您会看到它正在查找私钥的文件夹。在我的例子中是“c:/Users/Dell/.ssh/id_rsa”
- 我们应该将工作文件夹中生成的密钥放入此文件夹
我们还应确保将 SSH 密钥添加到 Gitlab 帐户。 单击您的 Git 实验室帐户 MyProfile 和 select 首选项。 Click to see how to add SSH to your Gitlab account
点击SSH密钥菜单,使用记事本打开生成的密钥文件,从记事本中复制密钥内容粘贴到SSH密钥文本编辑器中并保存。 Click to see how to add SSH Key to your Gitlab account
再次,运行 以下命令并立即检查。代码将被推送。
git -c core.sshCommand="ssh -v" push -u origin master
代码将被推送。
发生了同样的问题。
我使用 HTTPS
而不是 SSH
(我在 GitLab 中创建 repo 后按照说明步骤操作,但这导致了权限问题。这是因为要上传 ssh pub 密钥)
这些步骤在不使用 SSH 的情况下也有效
在 GitLab 中创建一个 repository/project
我删除了 .git(这导致了之前的权限问题。为了重新开始)
git 配置 --global user.name “user_name”
git 配置 --global user.email "user.email@gmail.com"
git init .
git remote add origin https://gitlab.com/user.account/user_project.git
git add .
和git commit -m "initial commit"
git push -u origin master
它会询问用户名和密码。然后固定。