git找不到正确的ssh

时间:2018-02-26 14:44:57

标签: git github ssh ssh-keys

当我尝试使用git连接时,我看到了这个错误

$ git clone git@github.com:MyCompany/eagle.git --verbose                                         
Cloning into 'eagle'...                                                                        
FATAL ERROR: Couldn't agree a key exchange algorithm (available: curve25519-sha256@libssh.org,ecdh-sh
a2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521)                                                   
fatal: Could not read from remote repository.                                                        

Please make sure you have the correct access rights                                                  
and the repository exists.

我设置了所有密钥等,连接工作正常,因为当我这样做时 ssh -v git@github.com连接成功。

我可以做些什么来了解哪里出了问题以及应该纠正什么?

谢谢,

5 个答案:

答案 0 :(得分:10)

对我来说,这是因为:

  1. 我让Git配置为使用PuTTY(即GIT_SSH=C:\Program Files\PuTTY\plink.exe
  2. 我正在运行旧版本的PuTTY(例如0.63)
  3. GitHub最近removed weak cryptography standards
  4. 我卸载了PuTTY 0.63和downloaded并安装了最新版本的PuTTY(此时为0.70),这解决了我的问题。

答案 1 :(得分:5)

如果ssh -T git@github.com为您提供:

Hi <name>! You've successfully authenticated, but GitHub
does not provide shell access.

消息,这意味着您的ssh设置正常。如果你得到:

FATAL ERROR: Couldn't agree a key exchange algorithm ...

这意味着您的ssh设置不能正常工作。显然这里存在矛盾,最可能的罪魁祸首是你安装了两个不同的ssh命令:一个是你正在使用的命令,哪个是有效的,另一个是Git正在使用的命令,它没有

This answerGit with SSH on Windows有很多赞成票。我避免使用Windows,因此我不知道这是否会有所帮助。 (我甚至不知道你是否因为你没有提到它而在Windows上。)

请注意Git version 2.3.0 added GIT_SSH_COMMANDGit version 2.10.0 added core.sshCommand to set a value for GIT_SSH_COMMAND。从那以后,Git version 2.13.0 learned some new tricks for dealing with issues tied to variations of ssh that demand different option letters.在所有情况下,确定哪个ssh Git正在运行是很重要的,并确保它运行一个实际工作的。有关所有选项变量及其功能的说明,请参阅the top level Git documentation。此处的链接指向可能与您自己的Git版本不匹配的网页,因此,如果您的Git已经很老,请考虑运行git --help git来阅读该版本。

答案 2 :(得分:4)

问题出在GIT_SSH上。这个变量之前是由putty设定的。 我删除了这个env变量,问题已经解决了

答案 3 :(得分:1)

这可能与GitHub removing weak crypto有关。这发生在2018年2月22日左右。

答案 4 :(得分:0)

我一直在使用SourceTree,然后使用腻子,然后使用open-ssh。检查GIT_SSH env变量值时,实际上是一团糟,并且正在使用与SourceTree一起安装的腻子。要使用open-ssh,需要删除此env变量。 (不使用腻子)

对于新手,我正在使用此代码段通过open-ssh“登录”到github: eval $(ssh-agent -s) && ssh-add ~/.ssh/mySHHKey

编辑:没关系,我昨天成功连接了,但是现在它停止了工作。...同时使用油灰进行选美。