Golang Go语言中golang ssh 包连接思科设备可以 ssh 上去 华为不行 各位大佬指点一下
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
这不就是说算法不一致吗
更多关于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配置或认证机制与思科有所不同。以下是一些可能的解决步骤和建议:
-
检查SSH配置:
- 确保华为设备的SSH服务已开启,且配置正确。
- 检查是否允许使用密码认证或密钥对认证。
-
调整Golang SSH客户端配置:
- 根据华为设备的SSH配置,调整Golang中的SSH客户端设置,包括认证方法(密码或密钥对)。
- 确保SSH客户端使用的加密算法、HMAC算法和密钥交换算法与华为设备兼容。
-
处理分页符:
- 如果华为设备的输出包含分页符(如“More”),则需要在Golang代码中添加逻辑来处理这些分页符,例如自动发送换行符以继续显示下一页内容。
-
调试和日志记录:
- 在Golang代码中添加详细的日志记录,以便跟踪SSH连接和命令执行过程中的问题。
- 使用调试工具或库(如
log
包)来输出调试信息,帮助定位问题。
-
查阅文档和社区资源:
- 查阅华为设备的SSH配置文档和Golang的
golang.org/x/crypto/ssh
包文档。 - 在技术社区和论坛中搜索类似问题的解决方案。
- 查阅华为设备的SSH配置文档和Golang的
通过以上步骤,应该能够解决连接华为设备时遇到的问题。如果问题仍然存在,建议联系华为技术支持以获取更详细的帮助。