SourceTree一直要求输入Github密码

78

我的组织正在从Bitbucket转换到Github进行项目管理。今天,我试图使用SourceTree将我们最新的项目从Bitbucket转移到Github。我向项目添加了第二个远程存储库(使用Github上目标存储库的URL),将所有内容更新到最新状态,然后尝试将代码推送到存储库。一个框弹出来,要求输入我的Github账户密码。我输入了我的(正确的)密码,点击'确定',然后对话框再次弹出。我再次正确地输入了密码,但它却显示相同的结果。

我的用户名被正确识别,我的密码也是正确的。我还尝试过更新SourceTree,因为我听说旧版本有这个问题。但问题仍然存在。

我正在使用SourceTree 2.3.1


你在GitHub上使用双因素认证吗? - Chris
https://dev59.com/8rL3oIgBc1ULPQZFXd9E#73719998 - Tom Howard
27个回答

115
如果您在 GitHub 上使用双重身份验证,您需要创建个人访问令牌并与 SourceTree 一起使用

要在 SourceTree 中使用 GitHub 的双重身份验证,您可以简单地使用访问令牌而不是密码。具体步骤如下:

  1. 转到GitHub上的“个人访问令牌”设置。
  2. 单击“生成新令牌”按钮。
  3. 给令牌命名一个描述性名称。
  4. 选择要授予此令牌的权限范围。
  5. 单击“生成令牌”按钮。
  6. 复制令牌并将其用作托管存储库中的密码。

您可以在GitHub的帮助文档中了解更多信息

Mac 用户:如果 SourceTree 不断要求输入密码,请前往终端并键入以下内容:

git config --global credential.helper osxkeychain

8
“Personal Access Tokens” 位于 “设置” / “开发者设置” 中。 - Felix
5
怎么做?将其作为密码用于您托管的代码库中。 - Alex 75
16
对我来说,这部分起了作用:git config --global credential.helper osxkeychain - Lucho
3
我已经苦苦挣扎了一年多,从未解决过这个问题。"git config --global credential.helper osxkeychain"。这个方法非常有效! - Alex
3
我需要执行的另一步是 - 使用 ssh -T git@github.com,这会提示:The authenticity of host 'github.com' can't be established. RSA key fingerprint is _________. Are you sure you want to continue connecting (yes/no)? 在此之后按下 yes 就可以正常工作了。 - Ramandeep Singh Gosal
显示剩余3条评论

25

我正在使用SSH密钥,但每次在SourceTree中都被要求输入密码。

在Atlassian社区上发现了这个解决方案,对我有用:

  1. 打开终端,进入你的项目目录
  2. 键入 git config credential.helper store
  3. 键入 git pull
  4. 输入用户名/密码(如果需要)

完美!


这是针对https URL的。据我所知,SSH URL不涉及凭证助手。 - VonC
这很有帮助!我也在使用SSH。 - Glenn Posadas
1
我认为值得一提的是,这个解决方案会以未加密的方式存储您的凭据:https://git-scm.com/docs/git-credential-store - Jarosław Wiśniewski
这在我们企业的AD服务填充后可以正常工作。 - WenChao
只适用于命令行。Sourcetree每次都要求输入密码!我快疯了! - Pedro77
显示剩余2条评论

14

如果您已启用 2FA,请参考 @Chris 答案,在 SourceTree 中使用 个人访问令牌(Personal Access Token),需要在以下位置添加帐户和此令牌:SourceTree > Preferences,并提供以下信息:

  • 认证类型:Basic
  • 用户名:{your-github-account}
  • 密码:{your-personal-access-token}
  • 协议:HTTPS

完成后,您就可以克隆您的 Github 仓库了。

输入图像描述


2
做了这个,仍然有问题,一遍又一遍地要求输入密码。 - János
做了这个,但仍然一直要求密码 :( - Karar Barcha

11
一个由Andrew Magill提供的适用于我的解决方案,来自源站点:链接 问题在于SourceTree内置的Git客户端带有git-credential-manager v1.12,该版本已经无法与Github配合使用,因为他们在其网站上禁用了TLS 1.1。您需要获取git-credential-manager v1.14。最简单的方法是单独安装当前版本的Git客户端,然后切换SourceTree以使用它(“系统git”)而不是其内置客户端。或者,您可以通过替换其文件中的最新版本来更新嵌入式客户端中的git-credential-manager,这是来自Microsoft的建议。

1
谢谢,这个解决方案对我很有用。关键步骤是在这里更新git凭证管理器--> https://github.com/Microsoft/Git-Credential-Manager-for-Windows/releases/tag/v1.14.0 - swdev
今天我在使用SourceTree Mac客户端时遇到了这个问题。GitHub刚刚关闭了密码身份验证。我费了很大功夫让SourceTree正常工作。GitHub桌面版和Fork都可以正常工作。但是SourceTree不行,直到我想到尝试将SourceTree切换到使用系统git才解决了问题。@A_01的帖子帮助确认了这一点。谢谢。 - mswlogo
2
这绝对是对我最有效的最简单的解决方案。 - Godfather

8
在更新后,我遇到了类似的问题。我尝试重新添加我的Bitbucket凭证,更改协议等方法,但没有成功,直到...
  1. 我打开了我的钥匙串,并在密码类别下搜索了Bitbucket(Github也可能是同样的方法,只需搜索Github)。
  2. 我发现我的用户有多个访问密钥,所以我关闭了我的仓库,删除了所有“应用程序密码”类型的密钥,打开了SourceTree首选项->帐户->删除了我的帐户并重新添加了它(像通常一样登录 - 我使用基本的HTTPS)。
  3. 钥匙串会询问是否保存密码,我选择是,现在我只看到一个"应用程序密码"类型的密钥。
我从存储库浏览器中打开我的存储库,嘿,不再弹出密码窗口了!
这个问题困扰了我整整一个星期! 如果这对您有帮助,您可以和我一起跳舞 :)

谢谢 ( ^_^) ! 我已经删除了所有的SouceTree密钥并重试拉取,第一次输入密码后它不再要求我输入密码。这比每次连续输入两次密码要好得多,即使你已经配置了SSH密钥。 - Pavlo Sadovyi
我感谢您的反馈!Atlassian 应该一定要解决保存密码的问题。他们似乎不理解密码是会变化的!此外,我也建议提供更好的说明,以便用户知道应该输入哪些密码!在 SourceTree 中没有这方面的列表,用户必须自己去找到这些密码,路径为 users>yourname>local>Atlassian>password。 - lohe

4

打开终端并克隆您的存储库。存储库网址必须包含您的用户ID, 例如:

$ git clone https://<username>@github.com/<userId>/<reponame>.git
$ git clone https://mark@github.com/mak123/<reponame>.git

然后将克隆的文件夹拖放到SourceTree窗口中。您也可以通过单击“+New Repository”按钮并从菜单中选择“Add Existing Local Repository”来完成此操作。可能会再次要求输入密码,但是这次它将被添加到您的Keychain。


4
在经过几个月的尝试后,我终于解决了这个问题。在Mac上:
  1. 通过启动台或Spotlight搜索,在Mac上打开“钥匙串访问”
  2. 在窗口左侧的过滤器下选择“登录”和“密码”,以缩小搜索范围
  3. 在窗口右上角搜索“git”
  4. 您可能会看到一个钥匙串。我右键单击并删除了我的一个条目。
  5. 进入Sourcetree并尝试进行拉取/获取/任何操作。您将被提示输入密码。这应该重新初始化您与Sourcetree的密码。要进行双重检查,请进入您的钥匙串并重复步骤3和4。单击钥匙串并查看访问控制选项卡。现在SourcetreeLogin应始终列为具有访问权限。

Keychain Example


这在Mac上运行 - Thangaprabhu Chandrasekhar

4
这是对我起作用的方法。
我几乎尝试了这里和网上提到的所有解决方案很多次。 我以前放弃过很多次,并且使用它已经有一年多了我想。 最终,我能够解决这个恼人的问题。
  1. 如用户“AEQ”在他的答案中建议的那样,我从我的钥匙串访问中删除了与GitHub相关的所有密码
  2. 尝试删除并重新添加Github帐户。 但问题仍然存在。(从“https://github.com/settings/tokens”生成个人访问令牌,并将其用作密码)
使其工作的原因是确保在添加新用户帐户时使用HTTPS而不是SSH。 如果您已经添加了该帐户,请编辑它即可。 就是这样。
最后,感觉很好。
附上截图以方便参考。

Screenshot


3

在我的情况下,在将代码推送到GitHub时,Sourcetree登录界面反复显示。从该界面登录失败。我最终确定是由于过期的OAuth令牌导致的,这很容易修复。

  1. 导航至GitHub帐户配置屏幕:工具 > 选项 > 认证
  2. 单击您的GitHub帐户,然后单击编辑
  3. 编辑托管帐户对话框中,单击刷新OAuth令牌按钮

“编辑”或“添加”- 如果账户是新的,使用Sourcetree也同样简单,因为您只需通过浏览器登录即可完成相同操作,并且它会立即识别出来。请参见我的答案(在我看到你的答案之前写的)。 - Engineer
没错,如果OAuth令牌过期(它会定期过期),那就很容易混淆了。因为登录屏幕出现并且无法登录,所以不明显发生了什么事情。 - Geck

2

除了在GitHub上设置个人访问令牌并执行A_01上述操作外,这可能会有所帮助(这是我最终使其工作的方法)

  • 确保我拥有最新版本的Sourcetree
  • 升级到最新版本并使用System Git(工具 ->选项 -> Git)
  • 升级到最新的Git凭据管理器 for Windows(通过我下载和双击的安装程序完成,非常容易)
  • 确保我在Tools -> Options -> Authentication中使用OAuth进行我的GitHub帐户
  • 确保我在Tools -> Options -> Git上勾选了“允许Sourcetree使用Git凭据管理器管理我的凭据”(这很重要!)
  • 然后当我触发GitHub对话框时(通过推送新分支,只是一个示例),我在那里登录(这就是它以前失败的地方)。
  • 接下来我得到了两个因素的身份验证对话框,并且代码如预期发送到了我的手机。我能够将手机上的代码输入到此对话框中。

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