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密码时,它就会通过。
如果您使用HTTPs
url,它会一直询问您的用户名/密码。
如果您在克隆/设置远程时正确使用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一样的行为,我做了以下工作:
-
ssh-add -K ~/.ssh/id_rsa
注意:将path更改为您的id_rsa密钥所在的位置。 -
ssh-add -A
-
创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密码