GoLang:"没有通用的密钥交换算法"错误

时间:2017-05-30 20:09:02

标签: go ssh

我是GoLang的新手,我正在尝试使用go连接到远程服务器。但我不断收到以下错误

Failed to dial: ssh: handshake failed: ssh: no common algorithm for key exchange; client offered: [curve2****-sh****@libssh.org ****-sha*-nis****ecdh-sha2-nistp384 ecdh-sha2-nistp**** diffie-hellman-group14-sha1 diffie-hellman-group1-sha1], server offered: [diffie-hellman-group-exchange-sha***]
下面的

是我用来连接的配置

 config := &ssh.ClientConfig{

    User: user,

    HostKeyCallback: nil,

    Auth: []ssh.AuthMethod{

    publicKey,
    },
}

2 个答案:

答案 0 :(得分:2)

好吧,就像错误所说的那样,客户端和服务器没有他们愿意同意的任何算法,所以他们无法通话。 Go提供的六个是它支持的所有(在openssh所做的12个中);服务器只提供 one ,而不是其中任何一个。你的选择:

  1. 说服服务器接受更多KEX算法;它可能支持更多,有人只是限制性地配置它。
  2. 自己为x / crypto / ssh实施DH Group Exchange,然后向上游发送补丁。
  3. 查找其他客户。

答案 1 :(得分:0)

看看这个question

我仍在努力,但是VonC提出了一些有趣的技巧来解决它。

希望有帮助。