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

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

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

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


当前回答

在我的情况下,当我尝试选择如下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开头。。。

其他回答

如果您使用https协议,Git将提示您输入密码。如果您使用ssh,它将使用您的私钥进行身份验证,而不是询问密码。

以下是解决此问题的方法:

git远程-v

这将显示来源的url。您将注意到此url中的https。(此处示例)

现在,您必须先删除这个,然后使用ssh添加url

git remote remove origin

git remote add origin git@github.com:PrestaShop/PrestaShop.git

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

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同步。

步骤1:检查当前配置

cat .git/config

您将获得:

[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
    ignorecase = true
    precomposeunicode = true
[remote "origin"]
    url = https://github.com/path_to_your_git.git
    fetch = +refs/heads/*:refs/remotes/origin/*
[user]
    name = your_username
    email = your_email
[branch "master-staging"]
    remote = origin
    merge = refs/heads/master-staging

步骤2:删除远程源

git remote rm origin

步骤3:使用用户名和密码添加远程源

git remote add origin https://your_git_username:your_git_password@github.com/path_to_your_git.git

Microsoft Stack解决方案(Windows和Azure DevOps)

首先打开.git/config文件,确保地址如下:

protocol://something@url

例如,Azure DevOps的.git/config:

[remote "origin"]
    url = https://mystore@dev.azure.com/mystore/myproject/
    fetch = +refs/heads/*:refs/remotes/origin/*

如果问题仍然存在,请打开Windows凭据管理器,单击名为Windows凭据的安全框并删除所有与git相关的凭据。

下次登录git时,它不会再消失。

我也有同样的问题。MacOS Mojave钥匙链不断询问密码。为了安全起见,您的id_rsa应该使用密码短语进行加密。然后尝试将其添加到密钥链ssh-add-K~/.ssh/id_rsa

如果密钥位于~/.ssh以外的另一个文件夹中,请用正确的文件夹替换。

Keychain现在知道了你的ssh密钥,希望现在一切正常。

如果您仍然面临这个问题,请尝试

1. brew install keychain

2. echo '/usr/local/bin/keychain $HOME/.ssh/id_rsa' >> ~/.bash_profile
   echo 'source $HOME/.keychain/$HOSTNAME-sh' ~/.bash_profile

3. ssh-add -K ~/.ssh/id_rsa

希望它现在应该起作用了。

更新:-K标志已被弃用。请改用以下方法:

ssh-add --apple-use-keychain ~/.ssh/id_ed25519 # path to private key