当我克隆一个存储库时,我一直有点“忍受”Github总是问我的用户名和密码。我想绕过这一步,因为这是我的工作流中的一个烦恼。

我尝试使用本指南设置SSH密钥(我成功地做到了)。https://help.github.com/articles/generating-ssh-keys,我成功了。

我的问题是,当克隆一个存储库(使用SSH)时,我仍然被要求输入我的github密码和密码短语。我的理解是,在我设置了这个SSH密钥之后,我就不再需要这样做了。

我不知道该问什么,所以我就说说我的目标吧。

我希望能够克隆存储库,而不必一直把我的Github信息。

我的SSH密钥丢失了什么?如果有人能提供一些指导或资源,我会很感激,因为当涉及到GitHub中的SSH身份验证时,我总是感到有点失落。

据我所知,这是一个测试事情是否正常工作的命令,下面是来自我的控制台的输出:

~ $ ssh -T git@github.com
Saving password to keychain failed
Enter passphrase for key '/Users/MYNAME/.ssh/id_rsa':
Hi MYNAME! You've successfully authenticated, but GitHub does not provide shell access.

当我输入密码时,应该先失败吗?然后,当我输入密码时,它就通过了。


当前回答

对我有用的方法(windows 10)

从应用程序打开git-gui 帮助 显示ssh密钥 生成ssh密钥 将SSH密钥复制到git提供者

这样我们可以保证git客户端指向有效的ssh

其他回答

使用ssh-add命令将公钥添加到ssh-agent。

ssh-add

确保ssh公钥,例如~/.ssh/id_rsa。Pub是你的回购设置。

确保你可以ssh到服务器,例如Bitbucket:

ssh -T git@bitbucket.org

更新url以从https移动到ssh。你可以通过检查输出来检查你所使用的:

git remote -v

如果你在url中看到https://,那么你仍然在使用https。要更新它:获取url并将https://替换为ssh:// e.g.。 变化:

https://git@bitbucket.org/../..

To:

ssh://git@bitbucket.org/../..

引用: https://docs.github.com/en/github/using-git/changing-a-remotes-url#switching-remote-urls-from-https-to-ssh

问题似乎是因为您从HTTPS克隆而不是SSH。我尝试了所有其他的解决方案,但仍然遇到问题。这对我很有用。

使用osxkeychain helper,如下所示:

看看你是否安装了它。 git credential-osxkeychain 如果它没有安装,你会被提示下载它作为Xcode命令行工具的一部分。 如果已经安装,告诉Git使用全局凭据使用osxkeychain helper。辅助配置: Git配置——全局凭据。辅助osxkeychain

下次克隆HTTPS url时,系统将提示您输入用户名/密码,并授予对OSX密钥链的访问权。当你第一次这样做之后,它应该被保存在你的钥匙链中,你就不必再输入它了。

这对我来说很管用:

git config --global core.sshCommand "'C:\Windows\System32\OpenSSH\ssh.exe'"

这个答案主要是为windows用户,也同样适用于如果你在任何其他操作系统上克隆tfs, github或gitlab的问题。

使用SSH协议时,默认的认证方式为私钥认证。无论何时由于某种原因失败,ssh-agent都会退回到基于用户名和密码的身份验证。

基于默认密钥的身份验证失败有几个原因。以下是最常见的情况:

a) ssh-agent无法找到默认私钥文件id_rsa,且没有显式指定其他私钥路径。

b)服务器中存储的公钥不正确。

c)您要克隆的路径不正确。

在任何情况下,为了解决问题,首先执行git clone命令并详细记录命令:

GIT_TRACE=1 GIT_SSH_COMMAND="ssh -vvv" git clone ssh://pathToYourRepo

您可以浏览日志中的每一步,以直观地了解问题可能是什么。


(a)情况下的故障排除

确保.ssh目录中有默认密钥名id_rsa。在使用ssh-keygen命令生成密钥时,您可能指定了一些不同的密钥名,或者可能根本没有任何密钥)。 如果您想指定不同的密钥进行身份验证,请使用以下命令: ssh-agent bash -c 'ssh-add ~/.ssh/anotherKey;git克隆ssh://pathToYourRepo


(b)情况下的故障排除

确保在服务器中存储公钥时没有多余的空格。


(c)情况下的故障排除

确保您没有尝试使用存储库路径的https版本进行克隆。

如果你正在为git使用ssh url,当提示输入ssh密码时,输入用户名“git”和密码作为系统的登录密码