我使用Git已经有一段时间了,但不断的密码请求开始让我感到很烦。

我使用的是Mac OS X和GitHub,我按照GitHub的设置Git页面的指示设置Git和SSH密钥。

我还将github SSH密钥添加到了我的Mac OS X密钥链中,正如github的SSH密钥密码页面中提到的那样。我的公钥已在Git中注册。

然而,每次我尝试Git拉时,我都必须输入用户名和密码。除了SSH密钥之外,我是否需要为此设置其他东西?


当前回答

根据您的配置,有不同类型的身份验证。以下是一些:

git凭证osxkeychain。如果您的凭据无效,请通过以下方式删除它:git凭据osxkeychain擦除或:printf“protocol=https\nhost=github.com\n”| git凭据osxkeychain擦除因此Git不会再向您请求密钥链权限。然后再次配置。请参阅:在GitHub上从OS X密钥链更新凭据您的SSH RSA密钥。为此,您需要将SSH密钥与添加的密钥进行比较,通过SSH-add-L/sh-add-L检查您是否使用了正确的身份。您的HTTPS身份验证(如果您使用的是HTTPS而不是ssh协议)。使用~/.netrc(Windows上的%HOME%/_netrc)提供凭据,例如。机器存储1.mycompany.com登录myusername密码mypassword

了解更多:在堆栈溢出时与GitHub同步。

其他回答

Windows和GitHub使用SSH推/拉Git指南:Windows Git图解指南

下载并安装PuTTY设置环境变量“GIT_SSH”=“path\to\plink.exe”(在已安装的腻子文件夹中)-非常重要!!!重新启动Windows资源管理器以使环境变量生效(不能仅重新启动命令提示符)运行puttygen.exe生成新密钥,将公钥复制到GitHub站点将此新私钥保存在磁盘上的安全位置(最好不要Dropbox)运行putty.exe并将SSH连接到github.co通过运行“shell:startup”快速进入启动文件夹。通过选美让您的私钥启动Windows。使用语法“path\to\pageage.exe”“path \to\privatkey”在Startup文件夹中创建快捷方式我们不需要在存储库的.git/config中设置“puttykeyfile”设置非常重要的是,使用的是GitHub的“SSH克隆URL”,而不是HTTPS。

使用此命令:用适当的主机名替换github.com

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

如果您使用的是Windows,而GitHub上突然开始出现这种情况,这可能是由于GitHub最近在2018-02-22禁用了对不推荐的加密算法的支持,在这种情况下,解决方案只需下载并安装最新版本的完整Git for Windows或者仅使用Windows的Git凭据管理器。

在我的情况下,当我尝试选择如下URL时,总是会收到密码提示:

git fetch http://username@gerrit-domainname/repositoryname refs/changes/1/12345/1 && git cherry-pick FETCH_HEAD

当cherry在另一台机器上选择时,这个URL工作得很好。然而,当我尝试使用正确的密码进行cherrypick时abc@12345我过去常犯以下错误:

remote: Unauthorized
remote: Authentication failed for http://username@gerrit-domainname  

在我的git配置文件中,远程URL如下所示:

url = ssh://gerrit-domainname:8080/wnc

解决方案:我通过提供HTTP密码解决了身份验证失败问题,该密码位于我的gerrit帐户->设置->HTTP密码。

HTTP密码类似于Th+IsAduMMy+PaSS+WordT+RY+Your+OwNPaSs,这与我的实际密码有很大不同abc@12345

注意:我的cherrpick URL以gitfetch开头。。。因此,此解决方案可能适用于git签出/下载,其中URL以git fetch开头。。。

我同意“codehugger”,并使用“orkoden”的指令,它对我有效-在NetBeans 7.3上-当您右键单击文件并选择上下文菜单-push-打开“push to remote”窗口时-这里有两个选项:

来源:https://github.com/myaccount/myproject.git/https://github.com/myaccount/myproject.git/

正如您所看到的,区别在于URL中的原始参数-您不想选择此选项(1),您想检查选项(2),这对我来说很好。