为什么即使我设置了SSH身份验证,Github还要求我输入用户名和密码?

52

我已经按照这些说明设置了github的SSH密钥。 但是现在当我执行操作时

> git pull
Username for 'https://github.com': 
在本地计算机的存储库中,我已经获取了公用SSH密钥,但是仍然要求输入用户名和密码。 我错过了什么步骤吗?

6
请检查 git remote -v 命令,确认您是否真的在使用 SSH 协议。 - Melebius
如何查看呢?我只看到类似于“origin https://github.com/...(fetch/push)”的东西。 - Alex
我已经添加了输出。看起来设置GitHub非常复杂,以至于在执行git pull或其他操作时从未要求输入用户名/密码... - Alex
1
可能是Git keeps prompting me for password的重复问题。 - phd
这个回答解决了你的问题吗?Git push需要用户名和密码 - Henke
3个回答

120

您需要告诉Git使用SSH协议而不是HTTPS。在GitHub上的存储库页面上,选择Clone or DownloadUse SSH。您将获得一个类似git@github.com:<user>/<repo>.git的SSH协议URL。

然后在您的工作目录中运行以下命令,以告诉Git使用此URL而不是当前的URL:

```bash git remote set-url origin git@github.com:/.git ```
git remote set-url origin git@github.com:<user>/<repo>.git

这也在GitHub帮助文档中有解释。

以上方法不会导致仓库被再次克隆,只是改变了本地仓库和GitHub之间未来同步所使用的通信协议。

或者,您可以使用git remote add <new-remote-name> <url>设置一个新的远程,然后使用git pull <new-remote-name>,但Git会将两种协议作为独立的远程进行跟踪,因此我不建议这样做。


我已经下载了代码库。所以要删除它并重新开始吗? - Alex
不,只需在当前工作树中运行此命令。它将更改源地址并保留其他所有内容。或者,您可以使用 git remote add 设置一个新的远程,然后使用 git pull <new-remote-name> - Melebius
非常复杂,但似乎可以工作。我需要把它写下来。或者你知道哪个网页上有很好的解释吗? - Alex
这在GitHub帮助中有描述,我已将链接添加到我的答案中。 - Melebius
1
感谢您的帮助!我希望GitHub在他们的“如何操作”页面上有这一行。 - Jordan

16

您也可以通过编辑项目的 git 配置文件来完成此操作。请使用您最喜欢的编辑器打开 .git/config 文件,并查找现有的 URL:

[remote "origin"]
    url=https://github.com/<usr>/<repo>.git 

改为:

[remote "origin"]
    url=git@github.com:<usr>/<repo>.git 

个人而言,我觉得这样更容易记住,尽管有点过于“内部化”。


4

在我的情况下,我在 GitHub 上创建了自己的存储库,并想从本地计算机将文件推送到该存储库。当我想要推送代码时,尽管我已经配置了具有公共 SSH 密钥的 GitHub 帐户,但被要求输入用户名和密码。

我的错误在于使用以下 https 端点添加了远程而不是 ssh 端点:

git remote add origin https://github.com/vagdevik/dummy.git

我通过以下方式解决了这个问题:

(接下来的步骤很重要,因为如果我们直接跳转到第2步,会提示远程已经存在的错误)

  1. 删除 .git 并重新初始化追踪:

rm -rf .git

重新初始化 git 追踪,添加要跟踪的文件并提交:

git init
git add .
git commit -m "first commit"

注意:我之前对这个repo没有做任何提交,所以删除.git不会有影响。如果你不想失去对repo所做的更改,请按照此处的步骤操作。

  1. 现在,添加SSH远程库,而不是使用https链接(重要

git remote add origin git@github.com:vagdevik/dummy.git

这一次,我没有被要求输入用户名和密码。

谢谢!


2
哦,是的,我的代码库没有任何之前的提交,所以这对我没有影响。否则,按照您提到的步骤是明智的选择。 - vagdevi k

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接