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

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


当前回答

确保您的存储库也使用了ssh

mahtab@mahtab-Lenovo-G50-70:~/my-projects/jenkins- case -2017$ git远程-v 来源git@github.com:eMahtab/jenkins-cje-2017.git(获取) 来源git@github.com:eMahtab/jenkins-cje-2017.git(推送)

不要使用https,如果你的远程使用https,那么它会一直要求密码,即使你已经添加了公钥到Github和添加私钥到ssh-agent。下面将始终要求输入密码

mahtab@mahtab-Lenovo-G50-70:~/my-projects/jenkins- case -2017$ git远程-v 来源https://github.com/eMahtab/jenkins-cje-2017.git(获取) 来源https://github.com/eMahtab/jenkins-cje-2017.git(推送)

其他回答

Mobaxterme有一个UI界面

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

使用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

正如在通过SSH从VSTS克隆Git回购中所解释的那样,要求密码!意想不到的

这个问题可能是因为公钥认证失败,所以它要求我的公司帐户的密码。

如果公钥身份验证成功,就不会发生这种情况。

你可以检查id_rsa。酒吧,甚至创建一个新的。

对于Mac OSX Sierra,我发现github上建议的Open Radar修复了我的问题。似乎Sierra改变了默认行为(我在升级后开始遇到这个问题)。

我发现这个特别有用: 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})

编辑: 我注意到,下一次我完全重启(即代理停止并重新启动)时,它不再工作。更完整的解决方案是上面提到的@ChrisJF:创建~/。ssh / config文件。以下是我的输出:

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

您可以根据需要添加任意数量的IdentityFile条目,但这是默认设置。这也是上面的开放式雷达链接上的“趋势”答案,ATM。

如果您使用的Windows和GIT没有第三方工具,并且您的密钥没有密码/密码短语保护,请使用以下方法:

Environment Variable HOME must be set to your user profile (e.g. C:\Users\Laptop) Go to C:\Users\Laptop\.ssh\ folder and edit "config" file (or create the file!) Example: C:\Users\Laptop.ssh\config (note: there is no . at the end!) Add your git-server host to the "config" file like so: #Example host entry Host myhostname.com HostName myhostname.com User git IdentityFile c:/users/laptop/.ssh/id_rsa.pub PasswordAuthentication no Port 422 Save the file and clone the repository like this: git clone ssh://myhostname.com/git-server/repos/picalc.git

您可以为“config”文件主机条目使用额外的配置参数。这些可以在你的本地git安装文件夹中找到,例如。“C: \ Program Files \ Git \ etc \ ssh \ ssh_config”。摘录:

# Host *
#   ForwardAgent no
#   ForwardX11 no
#   RhostsRSAAuthentication no
#   RSAAuthentication yes
#   PasswordAuthentication yes
#   HostbasedAuthentication no
#   GSSAPIAuthentication no
#   GSSAPIDelegateCredentials no
#   BatchMode no
#   CheckHostIP yes
#   AddressFamily any
#   ConnectTimeout 0
#   StrictHostKeyChecking ask
#   IdentityFile ~/.ssh/identity
#   IdentityFile ~/.ssh/id_rsa
#   IdentityFile ~/.ssh/id_dsa
#   IdentityFile ~/.ssh/id_ecdsa
#   IdentityFile ~/.ssh/id_ed25519
#   Port 22
#   Protocol 2
#   Cipher 3des
#   Ciphers aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc
#   MACs hmac-md5,hmac-sha1,umac-64@openssh.com,hmac-ripemd160
#   EscapeChar ~
#   Tunnel no
#   TunnelDevice any:any
#   PermitLocalCommand no
#   VisualHostKey no
#   ProxyCommand ssh -q -W %h:%p gateway.example.com
#   RekeyLimit 1G 1h