SSH密钥 – 仍然要求input密码和密码

当我克隆一个版本库的时候,我一直在和Github进行一些“贴”,总是要求我的用户名和密码。 我想绕过这一步,因为这是我的工作stream程中的一个烦恼。

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

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

我有点不确定要问什么,所以我只是陈述我的目标。

我希望能够克隆版本库,而不必一直放入我的Github信息

我的SSH密钥丢失了什么? 如果任何人都可以提供一些指导或资源,我将不胜感激,因为在GitHub中进行SSH身份validation时,我总觉得有点迷路。

据我所知,这是一个命令,testing是否正常工作,这里是我的控制台的输出:

~ $ 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. 

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

如果您使用HTTPsurl,它会一直询问您的用户名/密码。

如果您在克隆/设置远程时正确使用SSH 。 然后确保你有一个ssh代理来记住你的密码。 这样,您只能通过terminal会话input一次密码。

如果还是太烦人,那么只需设置一个没有密码的ssh-key即可。

做这个;

 ssh-add ~/.ssh/id_rsa 

这将要求您input密码,并且不会再询问。

在Mac OSX上,您可以使用以下命令将私钥添加到钥匙串中:

 ssh-add -K /path/to/private_key 

如果您的私钥存储在〜/ .ssh并且被命名为id_rsa:

 ssh-add -K ~/.ssh/id_rsa 

系统会提示您input密码,密码将存储在您的钥匙串中。

我尝试了所有的答案在这里, 没有任何这些答案的工作 ! 我的密码不会持续在会议/重新启动我的Mac之间。

我从阅读OpenRadar和Twitter的讨论中发现, 苹果故意改变了 macOS 10.12 Sierra中ssh-agent 的行为 ,不再自动加载以前的SSH密钥。 为了保持与El Cap一样的行为,我做了以下工作:

  1. ssh-add -K ~/.ssh/id_rsa
    注意:将path更改为您的id_rsa密钥所在的位置。
  2. ssh-add -A
  3. 创build(或编辑,如果存在)下面的~/.ssh/config文件:

     Host * UseKeychain yes AddKeysToAgent yes IdentityFile ~/.ssh/id_rsa 

而现在我的密码是记得重新启动我的Mac之间!

只需运行以下命令:

 ssh-add -K 

它永远不会要求您再次input密码。

您可以删除密钥的密码

 $ ssh-keygen -p [-P old_passphrase] [-N new_passphrase] [-f keyfile] 

或者你可以运行

 $ ssh-keygen -p 

你会得到一个keyfile的提示。 默认情况下,它~/.ssh/id_rsa所以按下input

系统会提示您input当前密码。

然后会出现提示input新密码短语,按回车

尝试ssh-agent因为它是在那里解释: https : //help.github.com/articles/working-with-ssh-key-passphrases

确保你也使用ssh作为你的仓库

mahtab@mahtab-Lenovo-G50-70:~/my-projects/jenkins-cje-2017$ git remote -v origin git@github.com:eMahtab/jenkins-cje-2017.git (fetch) origin git@github.com:eMahtab/jenkins-cje-2017.git (push)

在这里输入图像说明

不要使用https,如果您的远程使用的是https,那么它将继续询问密码,即使您已经将公钥添加到Github并将私钥添加到ssh-agent。 以下将始终要求input密码

mahtab@mahtab-Lenovo-G50-70:~/my-projects/jenkins-cje-2017$ git remote -v origin https://github.com/eMahtab/jenkins-cje-2017.git (fetch) origin https://github.com/eMahtab/jenkins-cje-2017.git (push)

对于Mac OSX Sierra,我发现在开放式雷达的github问题中提出的修复解决了我的问题。 似乎像塞拉利昂改变了默认行为(升级后,我开始有这个问题)。

这一个我觉得特别有用: https : //github.com/lionheart/openradar-mirror/issues/15361#issuecomment-249059061

 ssh-add -A 

在跑完之后 ,这导致我的身份被添加到代理中

 ssh-add -K {/path/to/key} 

总而言之,在OSX.12中:

 ssh-add -K {/path/to/key} ssh-add -A 

应该导致:

 Identity added: {/path/to/file} ({/path/to/file}) 

编辑:我注意到下一次我做了完全重新启动(又名代理停止并重新启动),这不再工作。 更完整的解决scheme是@ChrisJF上面提到的:创build一个~/.ssh/config文件。 这是我的输出:

 $ cat ~/.ssh/config Host * UseKeychain yes AddKeysToAgent yes IdentityFile ~/.ssh/id_rsa 

您可以根据需要添加尽可能多的IdentityFile条目,但这是默认设置。 在上面的openradar链接上,这也是“趋势”的答案。

我已经设置了一个密码,但由于某种原因,它不会再认识它了。 所以我只是使用ssh-add -K将身份文件添加到我的钥匙串中,并停止询问我的密码。

使用Github提供的ssh远程URL而不是https

如果您使用ssh url作为git,当系统提示inputssh的密码时,请将用户名作为“ git ”,密码作为您系统的login密码