当我克隆存储库时,我总是在某种程度上“忍受”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.
当我输入密码时,首先应该失败吗?然后,当我输入我的密码时,它会通过 .
22 回答
如果您使用
HTTPs
网址,它将始终询问您的用户名/密码 .如果您在克隆/设置遥控器时正确使用
SSH
. 然后确保您有一个ssh-agent来记住您的密码 . 这样,您只需通过终端会话输入一次密码 .如果它仍然太烦人,那么只需设置一个没有密码短语的ssh-key .
添加没有钥匙串的身份
有时您可能不希望密码链中存储密码,但不希望一遍又一遍地输入密码 .
你可以这样做:
这将要求您输入密码,输入密码,直到您重新启动它才会再次询问 .
使用钥匙串添加身份
正如@dennis在评论中指出的那样,要通过将密码存储在钥匙串中来重新启动密码,您可以在添加如下身份时使用
-K
选项(-k
用于Ubuntu):再次,这将要求您输入密码,输入密码,这次它永远不会再询问此身份 .
在Mac OSX上,您可以使用以下命令将私钥添加到钥匙串:
如果您的私钥存储在〜/ .ssh并且名为id_rsa:
然后,系统将提示您输入密码,密码将存储在您的钥匙串中 .
Edit - Handle restart
为了不必在重新启动后填写您的密码,请将以下内容添加到您的ssh配置文件中(通常位于〜/ .ssh / config)
我在这里尝试了所有的答案和 none of these answers worked !我的密码不会在我的Mac的会话/重启之间保持不变 .
我在阅读this OpenRadar和this Twitter discussion时发现,对于macOS 10.12 Sierra中的ssh-agent,Apple purposely changed the behaviour不再自动加载以前的SSH密钥 . 为了保持与El Cap相同的行为,我做了以下事情:
ssh-add -K ~/.ssh/id_rsa
注意:更改id_rsa键所在的路径 .
ssh-add -A
创建(或编辑,如果存在)以下
~/.ssh/config
文件:现在我的密码会在我的Mac重启之间被记住!
您可以删除密钥的密码
或者你可以跑
你得到一个密钥文件的提示 . 默认情况下
~/.ssh/id_rsa
所以按回车键系统将提示您输入当前密码短语 .
然后会出现新的密码短语,按回车键
只需运行以下命令:
它永远不会要求您再次输入密码 .
确保您还使用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 . 以下将始终要求输入密码
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)
试试那里的
ssh-agent
:https://help.github.com/articles/working-with-ssh-key-passphrases如果您使用的是Windows,这对我有用:
它会在第二个命令中要求密码,就是这样 .
我不得不执行:
Note :每次重启后都必须再次执行此操作 .
找到解决方案here .
对于Mac OSX Sierra,我发现在Open Radar的github问题中提出的修复修复了我的问题 . 好像Sierra改变了默认行为(升级后我开始遇到这个问题) .
我发现这个特别有用:https://github.com/lionheart/openradar-mirror/issues/15361#issuecomment-249059061
在我跑完之后,这导致我的身份被添加到代理
总结一下,在OSX.12中:
应该导致:
编辑:我注意到下次我完全重新启动(也就是代理停止并重新启动)这不再有效 . 更完整的解决方案是@ChrisJF上面提到的:创建
~/.ssh/config
文件 . 这是我的输出:您可以根据需要添加任意数量的
IdentityFile
条目,但这是默认设置 Build . 这是上面的openradar链接ATM上的"trending"答案 .这个答案在
Ubuntu
为我工作 .请参阅此GitHub文档,将远程的URL从https转换为ssh . https://help.github.com/articles/changing-a-remote-s-url/
要检查远程URL是ssh还是https,请使用
git remote -v
.要从https切换到ssh:
git remote set-url origin git@github.com:USERNAME/REPOSITORY.git
我已经设置了一个密码,但由于某种原因它不再能识别它 . 所以我只是使用
ssh-add -K
再次将身份文件添加到我的钥匙串中,它停止询问我的密码 .问题似乎是因为你是从HTTPS而不是SSH克隆的 . 我在这里尝试了所有其他解决方案,但仍然遇到问题 . 这样做对我来说 .
像这样使用
osxkeychain helper
:git credential-osxkeychain
如果未安装,则会提示您将其作为Xcode命令行工具的一部分下载 .
如果已安装,请告诉Git使用
osxkeychain helper
使用全局credential.helper
配置:git config --global credential.helper osxkeychain
下次克隆HTTPS网址时,系统会提示您输入用户名/密码,并授予对OSX密钥链的访问权限 . 在您第一次执行此操作后,它应保存在您的钥匙串中,您不必再次输入它 .
我想为那些可能仍然需要输入密码的人添加一个答案,因为他们已将IdentitiesOnly设置为yes . 这可能是由多个密钥和身份文件引起的,它们是git或服务器的密钥 .
生成密钥并将其复制到服务器后:
我发现它不起作用 .
然后我去检查了
~/.ssh/config
文件,我在底部看到了这个:然后我在上面添加:
我只需输入
ssh 12gpu
即可登录 .然后,您可以使用自己喜欢的名称添加多个ssh密钥,并且只需将上述四行的设置添加到配置文件中 .
Host 是您稍后连接到服务器时要输入的名称; HostName 是服务器的IP或域名,如github.com; User 是您在服务器中登录的用户名,如github或gitlab的用户名或git;并且 IdentityFile 是存储您生成的密钥的文件 .
通常,以下是允许您使用ssh在没有密码的情况下与服务器 Build 远程连接的步骤:
复制您的公钥并登录到您的远程服务器
将您的公钥添加到.ssh / authorized_keys
如果您的计算机中有多个ssh密钥,则可以使用ssh-add添加密钥
$ ssh-add /path/to/private/key
$ ssh username@your_ip_address
资料来源:http://diary-of-programmer.blogspot.com/2018/08/tips-how-to-ssh-to-your-digitalocean.html
如果您使用ssh url for git,当提示输入ssh的密码时,请将用户名设置为“git”,将密码作为系统的登录密码
使用Github提供的
ssh
远程URL而不是https
.如果您是 using Windows and GIT 没有第三方工具,并且您的密钥是 not secured ,请使用以下密码/密码:
环境变量 HOME 必须设置为您的用户配置文件(例如C:\ Users \ Laptop)
转到C:\ Users \ Laptop \ .ssh \文件夹和 edit "config" file (或创建文件!)示例:C:\ Users \ Laptop.ssh \ config(注意:最后没有 . )
将git-server主机添加到“config”文件中,如下所示:
git clone ssh://myhostname.com/git-server/repos/picalc.git
您可以为"config"文件主机条目使用其他配置参数 . 这些可以在您的本地git安装文件夹中找到,例如“ C:\Program Files\Git\etc\ssh\ssh_config ” . 摘抄:
对我来说同样的问题,解决方案是:
请参阅此github文档,将远程的URL从https转换为ssh . 要检查远程URL是ssh还是https,请使用git remote -v . 要从https切换到ssh:git remote set-url origin git@github.com:USERNAME / REPOSITORY.git @jeeYem
Mobaxterme有一个UI界面
setting > configuration > SSH > SSH Agent > [check] Use internal SSH agent "moboAgent" > add [your id_rsa and restart mobaxterme to set changes]
在LinuxMint / Ubuntu工作
添加以下行
Step 1:
Step 2:
打开终端并将密钥集添加到 ssh-add
提供密码 .