尽管我设置了SSH身份验证,为什么github会问我用户名/密码?

时间:2017-09-21 07:09:49

标签: git github ssh

我已按照these instructions为github设置SSH密钥。但现在我做的时候

> git pull
Username for 'https://github.com': 

在本地计算机上的存储库中,我已经从公共SSH密钥中获取,我仍然需要用户名/密码。我错过了一步吗?

3 个答案:

答案 0 :(得分:8)

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

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

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

GitHub Help中也对此进行了解释。

上述方法不会再次克隆存储库,只会更改用于将来本地存储库和GitHub之间同步的通信协议。

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

答案 1 :(得分:2)

这也可以通过编辑项目的git config文件来完成。使用您喜欢的编辑器打开.git/config并找到现有的URL:

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

更改为

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

我个人觉得这有点容易记住,但有可能变得更加“内部”。

答案 2 :(得分:0)

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

我的错误是我添加了带有 https 端点而不是 ssh 端点的遥控器,如下所示:

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

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

(以下几点很重要,因为如果我们直接跳到第3步,它会抛出一个错误,说遥控器已经存在)

  1. 删除 .git

rm -rf .git

  1. 再次初始化 git 跟踪,添加要跟踪的文件,并提交:
git init
git add .
git commit -m "first commit"
  1. 现在,按如下方式添加了 SSH 远程,而不是带有 https 端点的那个(重要

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

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

谢谢!