Golang Go语言中golang ssh 包连接思科设备可以 ssh 上去 华为不行 各位大佬指点一下

发布于 1周前 作者 phonegap100 来自 Go语言

Golang Go语言中golang ssh 包连接思科设备可以 ssh 上去 华为不行 各位大佬指点一下

ssh: handshake failed: ssh: no common algorithm for key exchange; client offered: [[email protected] ecdh-sha2-nistp256 ecdh-sha2-nistp384 ecdh-sha2-nistp521 diffie-hellman-group14-sha1], server offered: [diffie-hellman-group1-sha1 diffie-hellman-group-exchange-sha1] RunCommands result:

package main

import ( "fmt" "github.com/shenbowei/switch-ssh-go" )

func main() { user := "test" password := "QWX[@123x](/user/123x)" ipPort := "192.168.16.234:22"

//get the switch brand(vendor), include h3c,huawei and cisco
brand, err := ssh.GetSSHBrand(user, password, ipPort)
if err != nil {
    fmt.Println("GetSSHBrand err:\n", err.Error())
}
fmt.Println("Device brand is:\n", brand)

//run the cmds in the switch, and get the execution results cmds := make([]string, 0) cmds = append(cmds, “dis clock”) cmds = append(cmds, “dis vlan”) result, err := ssh.RunCommands(user, password, ipPort, cmds…) if err != nil { fmt.Println(“RunCommands err:\n”, err.Error()) } fmt.Println(“RunCommands result:\n”, result)

}


更多关于Golang Go语言中golang ssh 包连接思科设备可以 ssh 上去 华为不行 各位大佬指点一下的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html

7 回复

这不就是说算法不一致吗

更多关于Golang Go语言中golang ssh 包连接思科设备可以 ssh 上去 华为不行 各位大佬指点一下的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


你看看设备是不是用的 ssh1,而程序不支持 ssh1。
有些较老的设备只支持 ssh1 且不支持 ssh2。

客户端支持的 ssh 算法也太少了吧

搜索 "golang diffie-hellman-group1-sha1"
你会得到: https://github.com/golang/crypto/commit/36a967d3212260ed1abea70bb749e710e26457a

搜索 "golang diffie-hellman-group-exchange-sha1"
你会得到: https://github.com/golang/go/issues/17230

问搜索引擎显然比问 V2EX 好。

请问这个问题解决了吗

没有 就是算法不一致 ,包不支持,换 python 操作交换机了 。

在Golang中使用golang.org/x/crypto/ssh包连接思科设备能够成功,但连接华为设备时遇到问题,可能是由于华为设备的SSH配置或认证机制与思科有所不同。以下是一些可能的解决步骤和建议:

  1. 检查SSH配置

    • 确保华为设备的SSH服务已开启,且配置正确。
    • 检查是否允许使用密码认证或密钥对认证。
  2. 调整Golang SSH客户端配置

    • 根据华为设备的SSH配置,调整Golang中的SSH客户端设置,包括认证方法(密码或密钥对)。
    • 确保SSH客户端使用的加密算法、HMAC算法和密钥交换算法与华为设备兼容。
  3. 处理分页符

    • 如果华为设备的输出包含分页符(如“More”),则需要在Golang代码中添加逻辑来处理这些分页符,例如自动发送换行符以继续显示下一页内容。
  4. 调试和日志记录

    • 在Golang代码中添加详细的日志记录,以便跟踪SSH连接和命令执行过程中的问题。
    • 使用调试工具或库(如log包)来输出调试信息,帮助定位问题。
  5. 查阅文档和社区资源

    • 查阅华为设备的SSH配置文档和Golang的golang.org/x/crypto/ssh包文档。
    • 在技术社区和论坛中搜索类似问题的解决方案。

通过以上步骤,应该能够解决连接华为设备时遇到的问题。如果问题仍然存在,建议联系华为技术支持以获取更详细的帮助。

回到顶部