为什么Github不要求我输入用户名和密码?

6

我尝试从Github远程仓库执行git pull命令,但是出现以下错误:

Permission denied (publickey).
fatal: The remote end hung up unexpectedly

不要提示输入用户名和密码。我的~/.ssh/文件夹是空的,所以我不知道这里的publickey是什么意思。

git如何决定是否要询问用户名和密码?我如何强制它这样做?(我不想使用ssh密钥)


您可以使用https进行拉取。然后它会要求输入用户名/密码。 - Thilo
要了解使用哪个远程URL,您可以参考https://help.github.com/articles/which-remote-url-should-i-use/。 - Amit Badheka
2个回答

16
这是因为您使用了SSH URL,而且可能您的SSH设置没有配置(还说您的~/.ssh目录为空)。
您可以使用以下命令检查当前远程URL:
git remote -v

如果您想使用基本身份验证(用户名+密码),则必须使用https。

在存储库中执行以下操作:

git remote set-url origin https://github.com/your-username/repository.git

your-username替换为您的GitHub用户名,将repository替换为存储库名称。此外,将origin替换为您的远程名称(如果您使用其他远程名称,则可能不是)。
正如@Abizern所提到的,您可以配置SSH密钥并使用SSH URL。这可能会加速您的工作,并且不会让您每次都输入用户名/密码。
还有其他方法可以防止git每次都要求您输入密码。这里是其中之一,通过设置缓存时间。
...或者您可以在HTTPs URL中提供您的密码/令牌,就像这里提到的那样。
git remote set-url origin https://username:password@github.com/username/repository.git

您不必每次输入用户名和密码。此外,网站上有文档告诉您如何设置osx-credetial-helper,在第一次使用后将其保存在您的钥匙串中。https://help.github.com/articles/caching-your-github-password-in-git/ - Abizern
@Abizern 我在我的回答中已经指出了那个网址,就是那个。 :) - Ionică Bizău
我已经花了两个小时寻找这个问题的解决方案,将密码/令牌设置在HTTPs URL中是唯一有效的方法(当我尝试拉取时它不会要求我的密码,即使我重置了管理者)。非常好的答案。 - Bogdan

3

或者,为Github设置一个SSH密钥。

这很简单 - GitHub网站上有完整的指南。

这也有一个好处,就是允许你在没有访问计算机的情况下从GitHub网站撤销密钥。如果你在使用工作电脑,这非常有用。

编辑添加

我应该指出,GitHub建议使用https进行访问。


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