报错如下
ssh: no common algorithm for key exchange; client offered: [curve25519-sha256@libssh.org ecdh-sha2-nistp256 ecdh-sha2-nistp384 ecdh-sha2-nistp521 diffie-hellman-group14-sha1], server offered: [diffie-hellman-group-exchange-sha256]
基于SSH连接时报的错
报错时的代码:
var clientConfig *ssh.ClientConfig
clientConfig = &ssh.ClientConfig{
User: c.Username,
Auth: auth,
Timeout: 10 * time.Second,
HostKeyCallback: ssh.InsecureIgnoreHostKey(),
}
sshClient := new(ssh.Client)
if sshClient, err = ssh.Dial("tcp", fmt.Sprintf("%s:%d", c.Host, c.Port), clientConfig); err != nil {
return
}
解决其实很简单
要指定好"diffie-hellman-group-exchange-sha256"算法,就是报错中提到的;
成功的代码
var clientConfig *ssh.ClientConfig
clientConfig = &ssh.ClientConfig{
User: c.Username,
Auth: auth,
Timeout: 10 * time.Second,
HostKeyCallback: ssh.InsecureIgnoreHostKey(),
}
clientConfig.KeyExchanges = append(clientConfig.KeyExchanges, "diffie-hellman-group-exchange-sha256")
sshClient := new(ssh.Client)
if sshClient, err = ssh.Dial("tcp", fmt.Sprintf("%s:%d", c.Host, c.Port), clientConfig); err != nil {
return
}
如果解决了你的问题,欢迎留下足迹哦!