SourceTree 一直要求输入 Github 密码

SourceTree keeps asking for Github password

我的组织正在从 Bitbucket 切换到 Github 进行项目管理。今天,我试图通过使用 SourceTree 将我们最近的项目从 Bitbucket 转移到 Github。我向项目添加了第二个远程存储库(使用 Github 上目标存储库的 URL),使所有内容都保持最新状态,然后尝试将代码推送到存储库。弹出一个框,询问我的 Github 帐户的密码。我输入了我的(正确的)密码,然后点击'OK',对话框再次弹出。我再次(正确)输入了我的密码,它做了同样的事情。

我的用户名被正确识别,我的密码是正确的,我尝试更新 SourceTree,因为我听说这是以前版本的问题。问题依旧。

我正在使用 SourceTree 2.3.1

如果您没有使用 GitHub 2FA,询问您密码的另一个原因是:

您的 GitHub 存储库 url 是一个 ssh 存储库,而不是 https 存储库。
由于 git 没有找到您的 ssh 密钥(或者您的 ssh 密钥没有注册到您的 GitHub 帐户),它会返回到 account/password 机制。

如果您使用 2FA(和 https url),那么您 need a personal token as a password

如果您使用 GitHub 双因素身份验证,您需要 create a personal access token and use it with SourceTree:

To work with GitHub's two-factor authentication in SourceTree you can simply use your access token instead of your password. The steps to do this are as follows:

  1. Go to your Personal Access Tokens settings in GitHub.
  2. Click on the Generate new token button.
  3. Name the token something descriptive.
  4. Select which scopes you wish to grant this token.
  5. Click the Generate token button.
  6. Copy the token and use it as a password in your hosted repositories.

You can find more information about this on GitHub's help here.

Mac 用户: 如果您的 SourceTree 一直要求输入密码,请转到终端并输入:

git config --global credential.helper osxkeychain

在我的例子中,即使主项目使用的是 ssh,子模块也默认为 https。我通过在 SourceTree 的存储库设置中更改子模块的回购路径以使用 ssh 路径而不是 https 来修复它。

打开终端并克隆您的存储库。存储库 url 必须有您的 usedid, 例如:

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

然后将克隆的文件夹拖放到 sourceTree window.You 也可以通过单击“+New Repository”按钮并从菜单中选择 "Add Existing Local Repository" 来完成。 它可能会再次要求输入密码,但这次它会被添加到您的钥匙串中。

更新后我有类似的事情;我尝试了 re-adding 我的 bitbucket 凭据、更改协议等,但没有成功,直到...

  1. 我打开我的钥匙串并在“密码”类别下搜索 bitbucket([=34= 可能相同,只是搜索 github)。

  2. 我发现我的用户有多个访问密钥,所以我关闭了我的存储库,删除了 "application password" 种类的所有密钥,打开了 SourceTree 首选项 > 帐户 > 删除了我的帐户和 re-added 它(像往常一样登录 - 我使用 Basic 和 HTTPS)。

  3. Keychain 请求保存密码的权限,我答应了,现在我只看到一把 "application password" 类型的钥匙。

我从存储库浏览器打开了我的存储库,嘿嘿,没有更多的密码弹出窗口!

这困扰了我整整一个星期!如果这对你有帮助,你现在可以和我跳支舞了:)

SourceTree 版本 2.4.8.0

我的问题似乎是 SourceTree 和 GitHub 之间的设置顺序。我首先设置 SourceTree,然后单击所有 "setup later" 选项。

一个简单的修复 - 卸载和 re-install SourceTree。 non-obvious 位需要手动删除实际的程序文件。

从任何 "SourceTree.exe" 快捷方式,打开文件位置。我的分支在 "C:\Users\myusername\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Atlassian" 处,快捷方式指向另一个快捷方式。

打开该快捷方式的文件位置。我最终到达了 "C:\Users\myusername\AppData\Local\SourceTree"。删除整个 "SourceTree" 文件夹。上一级到“...\Local”并删除 "Atlassian" 文件夹。

现在卸载 SourceTree。确保你的 GitHub 是按照你想要的方式设置的(对我来说,我还创建并保存了一个用于 SourceTree 设置的 SSH 密钥)。 Re-install SourceTree 使用所有正确的凭据,指向正确的存储库等。

在这一切之后,SourceTree 两次询问我的 GitHub 凭据,有两个不同的对话框,然后停止并开始工作!没有更多的无限循环。祝你好运!

如果您正在使用"Username & Password"身份验证,您可以尝试更改为使用SSH密钥进行身份验证。

我在提交GitLab的时候遇到过这种情况everytime.When我修改了认证方式:SSH keys,问题已经解决

这是我发现的(在我的驱动器 C: 中搜索 'sourcetree' 之后):

  1. 卸载 SourceTree
  2. 删除文件夹 C:\Users[用户名]\AppData\Local\Atlassian\SourceTree
  3. 删除文件夹 C:\Users[用户名]\AppData\Local\SourceTree
  4. 重新安装 SourceTree

Andrew Magill 提供的对我有用的解决方案,复制自来源:link

问题是 SourceTree 的嵌入式 Git 客户端带有 git-credential-manager v1.12,它不再与 Github 一起使用,因为他们在其上禁用了 TLS 1.1地点。您需要获取 git-credential-manager v1.14。最简单的方法是单独安装 Git 客户端的当前副本,然后切换 SourceTree 以使用它 ("system git") 而不是其嵌入式客户端。或者,您可以更新嵌入式客户端中的 git-credential-manager,方法是将其文件替换为 Microsoft 的最新版本。

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

  • 我确保有最新版本的 Sourcetree
  • 我升级到最新版本并使用系统 Git(工具 -> 选项 -> Git)
  • 升级到 Git Windows 的最新 Git 凭据管理器(这是通过我下载并双击的安装程序,非常简单)
  • 确保我在工具 -> 选项 -> 身份验证中为我的 GitHub 帐户使用 OAuth
  • 确保我在工具 -> 选项 -> Git
  • 上勾选了复选框 "Allow Sourcetree to manage my credentials using the Git Credential Manager"(这很重要!!)
  • 然后当我触发 GitHub 对话框时(通过推送一个新分支,这只是一个例子),我在那里登录(这是它曾经失败的地方)。
  • 接下来我得到了 2 因素身份验证对话框,代码按预期发送到了我的 phone。我能够将 phone 中的代码输入到此对话框中。

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

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

  1. 打开终端,进入你的项目目录
  2. 类型git config credential.helper store
  3. 类型git pull
  4. 输入username/password(如果被问到)

瞧!

转到 Sourcetree -> 工具 -> 选项 -> Git Select

就我而言,我使用基于 HTTPS 的 url 克隆了存储库。然后,我使用 SSH 密钥为我的 githib 帐户配置了双因素身份验证。因此,每当我 pulling/pushing 更改时,它都会显示对话框以提供我的密码。

我通过右键单击 SourceTree 上的项目回购菜单启用 SSH 访问来修复它。

Mac: 这个解决方案对我有用。 成功克隆代码后,打开终端并运行这段代码

git config --global credential.helper osxkeychain

为了将来参考,我通过更改 Sourcetree 中使用的 GIT 系统解决了这个问题,从 EmbeddedSystem

如何更改git系统:
1. 找到 Options 子菜单(位于 Tools 菜单下)并单击它以查看 Options弹出
2. 在 选项 设置弹出窗口中,找到 Git 选项卡,然后单击它以查看 Git设置
3. 找到Git version设置,然后查看里面使用的版本。就我而言,我将其更改为 system 因为之前我使用的是 Git bash cmd,它看起来就像嵌入在 Sourcetree 中的 git 相互冲突一样。
4.重启Sourcetree

关注@Chris 如果您启用了 2FA,要在 SourceTree 中使用 Personal Access Token,您需要在 SourceTree > 首选项中添加带有此标记的帐户 包含以下信息:

  • 授权类型:基本
  • 用户名:{您的-github-账户}
  • 密码:{您的个人访问令牌}
  • 协议:HTTPS

之后,您可以克隆 Github 存储库。

另一个愚蠢的原因:您可能更改了笔记本电脑上的凭据,但还有另一台开发 PC 运行 但不经常使用,它启动了 SourceTree 并经常使用旧凭据来轮询状态。

听起来很愚蠢,但我花了一些时间来解决:-)

就我而言,Sourcetree 要求的密码是 ssh 私钥密码。如果我从 ssh 密钥中删除密码,则不会出现此提示。

但是因为我希望密码在那里,所以我一直在调查为什么它不接受我的 ssh 密钥密码。

原来有皱纹。如果您有多个具有不同密码的 ssh 私钥,Sourcetree 将为您提供每个密码的密码提示

这样想 - 如果您的系统中有一个新的 shell,并且您刚刚启动了 ssh-agent,并且 运行 ssh-add,密码是什么你得到的提示是?对于每一个这样的密码提示,Sourcetree 都会给你这个对话框。事实上,如果您按照在 shell 到 ssh-add 中的相同顺序将密码添加到对话框中,这将起作用。事实上,我猜 Sourcetree 在后台做的完全一样。

所以我的最终解决方案是 1) 将密码保留在 ssh 密钥上 2) 使所有这些密码相同。所以现在Sourcetree会给我单密码提示,输入ssh私钥密码就可以了。

在我的例子中,Sourcetree 登录屏幕在推送到 GitHub 时反复显示。从该屏幕登录失败。我最终确定这是由于 OAuth 令牌过期所致,修复起来很简单。

  1. 导航到 GitHub 帐户配置屏幕:工具 > 选项 > 身份验证
  2. 单击您的 GitHub 帐户,然后单击 编辑
  3. 编辑主机帐户对话框中点击刷新OAuth令牌按钮

由于这个问题专门针对 SourceTree 和 Github,所以 2021 年的答案很简单。引用 bcr:

Ensured I was using OAuth for my GitHub account stored in Tools -> Options -> Authentication

  • 去那里。 Select Add(新帐户)。
  • Select OAuth.
  • 点击Refresh OAuth Token。将打开一个浏览器页面 (github.com),请求更新您的令牌。
  • 登录接受。 SourceTree 将通过确认 github.com.
  • 提供的令牌立即做出响应

对于 windows 用户

change SSH Client from Putty/Plink to OpenSSH

在工具 -> 选项 -> SSHClient

经过几个月的失败,我终于能够解决这个问题。在 Mac 上:

  1. 使用 Launchpad 或 Spotlight 搜索在 Mac 上打开 'Keychain Access'
  2. 通过选择钥匙串下的“登录”和类别下的“密码”来缩小搜索范围(两个过滤器都在 window 的左侧)
  3. 在 window 的右上角搜索“git”
  4. 您可能会在那里看到钥匙扣。我右键单击并删除了我的一个条目。
  5. 进入 sourcetree 并尝试做一个 pull/fetch/anything。系统将提示您输入密码。这应该使用 Sourcetree 重新启动您的密码。要仔细检查,请进入您的钥匙串并重复步骤 3 和 4。单击钥匙串并查看访问控制选项卡。 SourcetreeLogin 现在应该列为始终具有访问权限。

这是对我有用的方法。

我多次尝试了此处和网络上提到的几乎所有解决方案。我之前放弃了很多次,我想这样使用它已经一年多了。我终于解决了这个烦人的问题。

  1. 根据用户“AEQ”在其回答中的建议,我从我的钥匙串访问.
  2. 中删除了与GitHub相关的所有密码
  3. 尝试删除并重新添加 Github 帐户。但是,问题仍然存在。 (从“https://github.com/settings/tokens”生成个人访问令牌并将其用作密码)

它成功的原因是 确保在添加新用户帐户时使用 HTTPS 而不是 SSH。如果您已经添加了该帐户,只需对其进行编辑。就是这样。

总算感觉不错了

为方便起见附上截图。

在 Mac 上确实遇到了这个问题,无法让它与 SSH 一起工作。最终遵循了这个有效的指南:https://www.youtube.com/watch?v=otRHRPnHDeI.

有几件事可能是原因,可能不是 SSH 本身。例如,Oauth 显然不适用于 SourceTree,尽管在使用它时没有立即出现错误。确保您使用的是个人访问令牌,而不是您的真实密码。

一个好的经验法则是,如果在连接您的帐户后它只显示您的 public 存储库,则它已经损坏。 https://github.com/settings/tokens

最简单的方法是创建应用密码并使用该密码。 您可以在此处了解如何在 Bitbucket 上创建应用密码:

https://docs.snyk.io/tutorials/getting-started/atlassian-integrations/atlassian-bitbucket-app-password