繁体   English   中英

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

[英]Why is github asking me username/password although I setup SSH authentication?

我已按照这些说明为 github 设置 SSH 密钥。 但是现在当我这样做

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

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

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

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

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 会将两种协议作为单独的遥控器进行跟踪,所以我不推荐这个。

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

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

更改为:

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

就个人而言,我发现这有点容易记住,但可能会更加“内部”。

就我而言,我在 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

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

谢谢!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM