gpt4 book ai didi

go - 尝试通过 SSH 连接到远程主机时出错

转载 作者:行者123 更新时间:2023-12-02 18:30:17 24 4
gpt4 key购买 nike

我正在尝试连接到远程主机以发出命令,但在运行代码时收到以下错误消息:

ssh: handshake failed: 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-group1-sha1]panic: runtime error: invalid memory address or nil pointer dereference [signal SIGSEGV: segmentation violation code=0x1 addr=0x10 pc=0x759836]

这是我正在使用的代码:

func (SSHClient *SSH) Connect(mode int) {
    var SSHConfig *ssh.ClientConfig
    var auth []ssh.AuthMethod

    if mode == CERT_PUBLIC_KEY_FILE {
        auth = []ssh.AuthMethod{SSHClient.readPublicKeyFile(SSHClient.Cert)}
    }

    SSHConfig = &ssh.ClientConfig{
        User:            SSHClient.User,
        Auth:            auth,
        HostKeyCallback: ssh.InsecureIgnoreHostKey(),
        Timeout:         time.Second * DEFAULT_TIMEOUT,
    }

    SSHConfig.Config.Ciphers = append(SSHConfig.Config.Ciphers, "diffie-hellman-group1-sha1")

    client, err := ssh.Dial("tcp", fmt.Sprintf("%s:%d", SSHClient.IP, SSHClient.Port), SSHConfig)

    if err != nil {
        fmt.Printf("ERROR - While trying to Dial to the host %s with error: %s", SSHClient.IP, err.Error())
        return
    }

    session, err := client.NewSession()
    if err != nil {
        fmt.Printf("ERROR - While trying to create a new session on host %s with error: %s", SSHClient.IP, err.Error())
        client.Close()
        return
    }

    SSHClient.session = session
    SSHClient.client = client
}

关于如何解决这个问题有什么想法吗?

提前致谢。

最佳答案

问题是......服务器只愿意通过 diffie-hellman-group1-sha1 进行对话

还有:

  • golang/go issue 2903 : ssh: 添加 diffie-hellman-group1-sha1,已于 6 天前关闭
  • golang/go/issue 17230 : 提案:x/crypto/ssh:支持来自 RFC 4419 的 Diffie-Hellman Group Exchange,现已实现。

因此,您的客户端需要一个 golang.org/x/crypto/ssh 的分支,例如 bored-engineer/ssh ,其中commit 39a91bcommit fe5e4ff确实添加了对 diffie-hellman-group1-sha1 的支持。
或者安装最新的golang/crypto ,其中包括commit 57b3e21 .

关于go - 尝试通过 SSH 连接到远程主机时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58459755/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com