当我克隆一个存储库时,我一直有点“忍受”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.

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


当前回答

Mobaxterme有一个UI界面

> configuration > SSH > SSH Agent > [check]使用内部SSH代理“moboAgent”> add [your id_rsa and restart mobaxterme to set changes]

其他回答

如果你使用的是windows,这对我来说是有效的:

eval `ssh-agent -s`
ssh-add ~/.ssh/*_rsa

它会在第二个命令中询问密码短语,就是这样。

将这些行添加到bash配置文件$HOME/中。bash_profile或$HOME/.bashrc。

TL;DR需要使用ssh agent。为此,打开终端&在推到git之前,执行 ssh-add 在提示时输入您的密码。

点击这里查看StackExchange的原始答案

我想为那些可能还需要进入的人补充一个答案 密码,因为他们已经设置 身份仅为yes。这可能是由多个密钥和身份文件引起的,这些密钥是git或服务器的密钥。

在我生成密钥并将其复制到服务器后:

ssh-keygen
ssh-copy-id -i ~/.ssh/12gpu_server.pub lerner@192.168.20.160

我发现它不管用。

然后我去检查~/。ssh/config文件,我看到这个在 底:

Host *
IdentitiesOnly yes

然后我在上面加上这个:

Host 12gpu
HostName 192.168.20.160
User lerner
IdentityFile ~/.ssh/12gpu_server

我可以通过输入ssh 12gpu登录。

然后,您可以使用自己喜欢的名称添加多个ssh密钥 只需要在配置中添加上述四行设置即可 文件。

Host是连接到服务器时要输入的名称 晚;主机名是服务器的ip或域名,如github.com;“User”为登录的用户名 在服务器端,比如用户名或git for github或gitlab;而IdentityFile是存储 生成的密钥。

我最近升级到macOS Mojave,并通过homebrew安装了一些工具,这似乎是把苹果版本的ssh-add换成了另一个版本。我默认版本的ssh-add没有-K选项。这导致了以下错误:

# ssh-add:非法选项——K

您可以通过运行哪个ssh-add来查看您使用的是哪个版本的ssh-add。

(我的存储在/usr/local/bin/ssh-add)

为了解决这个问题,我必须指向苹果的版本:

/usr/bin/ssh-add -K ~/.ssh/id_rsa

Git/GitHub之后运行得很好。有关更多信息,请参见:Error: ssh-add: illegal option——K

这个答案主要是为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版本进行克隆。